0%
前言
线性表之队列的Java版实现
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| package com;
public class Queue<T> {
public Node head; public Integer queueLength;
private class Node { public T data; public Node next;
public Node(T data, Node next) { this.data = data; this.next = next; } }
public Queue() { head = new Node(null, null); queueLength = 0; }
public boolean isEmpty() { return queueLength==0; }
public int size() { return queueLength; }
public void enQueue(T t) { Node node = new Node(t, null); if (!isEmpty()) { node.next = head.next; } head.next = node; queueLength++; }
public T deQueue() { Node n = head; for (int i = 0; i < queueLength-1; i++) { n = n.next; } Node nLast = n.next; n.next = null; queueLength--; return nLast.data; }
public String toString() { String str = ""; Node n = head; while (n.next!=null) { n = n.next; str += n.data + " "; } return str; }
}
|
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| package com;
import java.util.Iterator; import java.util.Objects; import java.util.function.Consumer;
public class Queue<T> implements Iterable<T> {
public Node head; public Integer queueLength; public Node last;
@Override public Iterator<T> iterator() { return null; }
@Override public void forEach(Consumer action) { Objects.requireNonNull(action); Node n = head; for (int i = 0; i < queueLength; i++) { n = n.next; action.accept(n.data); } }
private class Node { public T data; public Node next;
public Node(T data, Node next) { this.data = data; this.next = next; } }
public Queue() { this.head = new Node(null, null); this.last = null; this.queueLength = 0; }
public boolean isEmpty() { return queueLength==0; }
public int size() { return queueLength; }
public void enQueue(T t) { if (last==null) { last = new Node(t, null); head.next = last; } else { Node node = new Node(t, null); node.next = head.next; head.next = node; } queueLength++; }
public T deQueue() { if (isEmpty()) { return null; } Node node = head; Node n = last; while (true) { if (node.next!=last) { node = node.next; } else { last = node; break; } } queueLength--; if (isEmpty()) { last = null; } return n.data; }
public String toString() { String str = ""; Node n = head; while (n.next!=null) { n = n.next; str += n.data + " "; } return str; }
}
|
完成
参考文献
哔哩哔哩——黑马程序员