package data_structure;
class qNode<E>{
E data;
qNode<E> next=null;
public qNode(E data){
this.data=data;
}
}
public class ListQueue<E> {
private qNode<E> head=null;
private qNode<E> tail=null;
public void push(E data){
qNode<E> newNode=new qNode<E>(data);
if(isEmpty()){
head=newNode;
tail=newNode;
}
else{
tail.next=newNode;
tail=newNode;
}
}
public E pop(){
if(isEmpty())
return null;
E data=head.data;
if(head==tail){ //pop的时候一定注意当队列仅剩一个元素的时候,head和tail指向相同元素,所以要把tail指向null;否则pop后,队列不为空
tail=null;
}
head=head.next;
return data;
}
public E peekLast(){
if(isEmpty())
return null;
E data=tail.data;
return data;
}
public E peekFirst(){
if(isEmpty())
return null;
E data=head.data;
return data;
}
public boolean isEmpty(){
if(tail==null&&head==null)
return true;
return false;
}
public int size(){
qNode<E> tmp=head;
int n=0;
while(tmp!=null){
tmp=tmp.next;
n++;
}
return n;
}
public static void main(String []args){
ListQueue<Integer> queue=new ListQueue<>();
queue.push(1);
queue.push(2);
System.out.println(queue.size());
System.out.println(queue.isEmpty());
System.out.println(queue.pop());
System.out.println(queue.pop());
System.out.println(queue.isEmpty());
queue.push(3);
queue.push(4);
System.out.println(queue.peekFirst());
System.out.println(queue.peekLast());
}
}
![]()