public class Queue<Item> {
private Node first;
private Node last;
private int N;
private class Node{
Item item;
Node next;
}
public boolean isEmpty() {return first==0;}
public int size() {return N ;}
public void enqueue(Item item){
//从列尾添加元素
Node oldlast =last;
last=new Node();
last.item=item;
last.next=null;
if (isEmpty()) first=last;
else oldlast.next=last;
N++;
}
public Item dequeue(){
//从列头删除元素
Item item = first.item;
first=first.next;
if (isEmpty()) last=null;
N--;
return item;
}
}
链表是数组的一种重要的替代方式
与下压堆栈的不同点在于增加和删除元素时都得判断队列是否为空,从而调整头和尾指针,增加时为空调整头指针,删除时为空调整尾指针。



京公网安备 11010502036488号