话说。。。每次都用现成的类实现,是不是有点偷懒
//队列的本质也是线性表,特性为只在线性表首位端进行操作,为先进先出,和生活中排队的队列是一样的
//队列涉及到的操作主要是入队(enQueue)和出队(deQueue)
//其中,因为出队是在队尾操作,因此,用动态数组实现队列就会涉及到所有元素的前移,O(n)
//所以队列这里选择双向链表实现,得益于headnode和lastnode指针,无论入队出队都是O(1),牺牲空间换时间
//实际方法实现也和前面都一样,我就节省时间直接用java自带Linkedlist类实现了
//话说java自带的Linkedlist居然就是双向不是单向,双链表的功能覆盖范围比单链表更广,存储上却多了一个指针空间
import java.util.LinkedList;
import java.util.List;
public class QueueZH<E> {
private List<E> list = new LinkedList<>();
public void enQueue(E element){
list.add(0,element);
}
public E deQueue(){
E element = list.remove(list.size()-1);
return element;
}
public void clear(){
list.clear();
}
public E peekHead(){
E element = list.get(0);
return element;
}
public E peekTail(){
E element = list.get(list.size()-1);
return element;
}
public boolean isEmpty(){
return list.isEmpty();
}
public int size(){
return list.size();
}
}