代码方面:
注意与链表不同的是,队列元素的入队出队位置,以及对应指针的表示
package shujujiegou;
public class Queue {
/**
* use the inner class to express the node
*/
class Node {
int data;
Node next;
/**
***********
* The constructor
*/
public Node(int Value) {
data = Value;
next = null;
}
}
/**
* The header pointer
*/
Node header;
/**
* The tail pointer
*/
Node tail;
/**
* Use the constructor to construct an empty Queue
*
*/
public Queue() {
header = new Node(-1);
// header.next = null;
tail = header;
//Queue is empty
}
/**
**************
* Enqueue.
*
*/
public void enquue(int Value) {
Node tempNode = new Node(Value);
tail.next = tempNode;
tail = tempNode;
}
/**
**************
* Dequeue.
*
* And return the value of the header
*/
public int dequeue() {
if(header == null) {
System.out.println("No element in the queue");
return -1;
}
int result = header.next.data;
header.next = header.next.next;
//Do not forget the empty queue
if(header.next == null) {
tail = header;
}
return result;
}
/**
* print the queue
*
*/
public String toString() {
String result = "";
if(header.next == null) {
return "empty";
}
Node tempNode = header.next;
while(tempNode != null) {
result += tempNode.data + ", ";
tempNode = tempNode.next;
}
return result;
}
/**
* The entrance of the program
*
*/
public static void main(String[] args) {
Queue q = new Queue();
System.out.println("Initialized, the list is: " + q.toString());
for(int i = 0; i < 5; i++) {
q.enquue(i + 1);
}
System.out.println("Enqueue, the queue is: " + q.toString());
q.dequeue();
System.out.println("Dequeue, the queue is: " + q.toString());
int V;
for(int i = 0; i < 5; i++) {
V = q.dequeue();
System.out.println("Looped delete " + V + ", the new queue is: " + q.toString());
}
for(int i = 0; i < 3; i++) {
q.enquue(i + 10);
}
System.out.println("Enqueue, the queue is: " + q.toString());
}
}
单词方面: