浅析用链表实现的队列

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

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

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

newNode.next = head;
head = newNode; 

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

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/KenBaiCaiDeMiao/p/11622977.html