乐观学习,乐观生活,才能不断前进啊!!!
我的主页:optimistic_chen
欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~
前言
由图可知:Queue接口一定意义上和List接口“平级”
注意一个细节, LinkedList不仅属于List接口下的类,也属于Queue接口下的类 。根据上篇博客所说,链表与数组都可以模拟栈,而栈也是List接口下的类。
队列Queue
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。
入队列(Enqueue):进行插入操作的一端称为队尾
出队列(Dequeue):进行删除操作的一端称为队头
队列具有先进先出的特性
大家可以简单理解为日常生活中“排队”这一现象。
队列的模拟实现
简单想一想,因为LinkedList实现了Queue接口,所以Queue的底层是由链表实现的。
受到LinkedList的影响,我们下意识认为Queue的底层是双向链表,那单链表能不能来实现队列呢?
那么以LinkedList来实现队列怎么样呢?
建立内部类
//内部类
public static class ListNode {
public ListNode prev;
public ListNode next;
int value;
ListNode(int value){
this.value=value;
}
}
public ListNode first=null;
public ListNode last=null;
int Usedsize=0;
入队列—向双向链表位置插入新节点
public void offer(int val){
ListNode node