package queue.linkQueue; public class Node { // 数据域 Object element; // 指针域 Node next; // 头结点初始化 public Node(Node next) { this.next = next; } // 非头结点初始化 public Node(Object element, Node next) { this.element = element; this.next = next; } }
***************************************************************************************
package queue.linkQueue; public class LinkQueue { Node front;// 头结点 Node rear;// 尾结点 int size;// 队列大小 // 初始化一个空队列 public LinkQueue() { front = new Node(null); rear = front; size = 0; } // 队列的大小 public int size() { return size; } // 判断队列是否为空 public boolean isEmpty() { return size == 0; } // 入队列 public void enQueue(int data) { Node node = new Node(data, null); rear.next = node; rear=node; size++; } // 出队列 public Object deQueue() { if (isEmpty()) { throw new IndexOutOfBoundsException("队列为空"); } Node node = front.next;// 得到以一个结点 front.next = node.next;// 将头结点的第一个结点指向第一个结点的下一个结点 if (node == rear) {// 如果队列中只有一个元素,则删除后将rear指向头结点 rear = front; } size--; return node.element; } // 得到对头元素,不删除 public Object getFront() { if (isEmpty()) { return null; } else { return front.next.element; } } // 打印队列中的元素 public void traverse() { if (isEmpty()) { System.out.println("null"); } else { Node current = front.next;// 当前结点 for (Node node = current; node != null; node = node.next) { System.out.print(node.element + " "); } } System.out.println(); } }
时间: 2024-11-03 21:40:24