题目:
建立一个循环链队列,完成以下操作:
1)根据输入的队列长度 n 和各元素值建立一个循环链表表示的队列(循环链队列),并且设定一个尾指针来指向尾结点,然后遍历输出队列中各元素值。
2)将数据元素 e 入队后,遍历输出入队后的队列中所有各元素值。
3)将循环链队列的队首元素进行出队,并输出刚出队元素的值和遍历输出出队后队列中各元素值。
public class Node {
Object object;
Node next;
public Node() {
super();
}
public Node(Object object) {
super();
this.object = object;
}
@Override
public String toString() {
return "Node [object=" + object + "]";
}
}
public class CyclicLinkedQueue {
Node rear = null;
public void init(int length, Node... nodes) {
Node temp = null;
for (int i = 0; i < length; i++) {
if (i == 0) {
rear = nodes[i];
rear.next = nodes[i];
temp = nodes[i];
} else {
rear.next = nodes[i];
rear = nodes[i];
rear.next = temp;
}
}
}
public void offer(Node node) {
node.next = rear.next;
rear.next = node;
}
public Node poll() {
Node temp = null;
temp = rear.next;
rear.next = rear.next.next;
return temp;
}
public void show() {
Node temp = rear.next;
while (true) {
System.out.println(temp);
if (temp.next != rear) {
temp = temp.next;
} else {
temp = temp.next;
System.out.println(temp);
break;
}
}
}
public static void main(String[] args) {
Node node = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
Node node5 = new Node(5);
CyclicLinkedQueue linkedQueue = new CyclicLinkedQueue();
linkedQueue.init(4, node, node2, node3, node4);
linkedQueue.show();
System.out.println("-----------");
linkedQueue.offer(node5);
linkedQueue.show();
System.out.println("-----------");
System.out.println(linkedQueue.poll());
System.out.println("-----------");
linkedQueue.show();
}
}
没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。