浅析用链表实现的队列

Posted kenbaicaidemiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析用链表实现的队列相关的知识,希望对你有一定的参考价值。

队列与栈一样是一种线性集合,队列与栈的不同之处在于,队列需要在两端进行操作,在用链表实现的队列中,需要在表头和表尾进行操作。

 

思考一下,在链表实现的队列中,入队和出队操作在表头和表尾进行有什么差异?(假设链表为单链表,head指向链表头节点,end指向链表尾节点)

 

先考虑入队操作,入队操作在链表头和链表尾进行操作都不会复杂:

newNode.next = head;
head = newNode; 

newNode.next = null;
end.next = newNode;

 

继续考虑出队操作,如果出队操作在链表头进行:

newNode = head;
head = head.next;
return newNode.data

如果出队操作在链表尾进行就比较麻烦了,因为我们需要将链表尾节点的上一个节点的next属性的值修改为null,我们需要遍历链表找到这个节点。

所以使用链表实现队列,最好将链表头作为队列头,将链表尾作为队列尾。

以上是关于浅析用链表实现的队列的主要内容,如果未能解决你的问题,请参考以下文章

30分钟掌握-算法(用链表实现队列)演示

用链表实现轻院1276士兵队列训练问题

用链表std::list实现队列

队列的基本操作

数据结构与算法--必知必会

HashMap源码阅读笔记——HashMap的实现原理浅析