Java - LinkedList push() pop() 暗示它是一个堆栈,而不是一个队列?

Hat*_*end 7 java queue linked-list data-structures

在我的数据结构课上,我了解到 aLinkedList是一个队列。就像现实生活中的一条线,第一个进入这条线的人将是第一个离开的人。说得通。如下所示,aListedList实现了Queue具有 FIFO(先进先出)过程的 a。

但是,如果您查看方法push(E)和的说明pop(),它们的内容如下:

推(E)

将一个元素推送到此列表表示的堆栈上。换句话说,在此列表的前面插入元素。

流行音乐()

从此列表表示的堆栈中弹出一个元素。换句话说,删除并返回此列表的第一个元素。

那是......不是队列。那是一个堆栈。进入 LinkedList via 的第一个元素push无法访问,pop直到每个元素都被pop()'ed后添加。

为什么是这样?我知道 LinkedLists 既可以用作堆栈(如果您只使用addFirst(E)and removeFirst()),也可以用作队列(如果您只使用addFirst(E)and removeLast(),反之亦然)那么为什么会这样呢?我觉得pop()应该删除并返回最后一个元素,或者push(E)应该在LinkedList. 那么就更有意义了。

TLDR:为什么LinkedList'spushpop暗示它在LinkedList实际实现时作为堆栈工作Queue

在此处输入图片说明

小智 3

Push()按照惯例,操作与( ,更具体地说,在这种情况下)pop()相关,这就是为什么您应该期望在使用这些方法时以这种方式工作。如果您希望您的工作作为替代(它实现接口),您想要使用的方法(如文档中所述)是和。StacksDequeLinkedListLinkedListQueueQueueadd()remove()

请参阅链表文档