【发布时间】:2017-01-26 02:29:39
【问题描述】:
在我的数据结构课程中,我了解到LinkedList 是一个队列。就像现实生活中的排队一样,第一个进入队列的人将是第一个离开的人。说得通。如下所示,ListedList 实现了具有 FIFO(先进先出)过程的 Queue。
但是,如果您查看方法 push(E) 和 pop() 的描述,它们的内容如下:
推(E)
将一个元素压入此列表表示的堆栈。换句话说,在这个列表的前面插入元素。
pop()
从这个列表表示的堆栈中弹出一个元素。换句话说,删除并返回此列表的第一个元素。
那是....不是队列。那是一个堆栈。通过push 进入LinkedList 的第一个元素不能被pop 访问,直到它被pop()'ed 之后添加的每个元素。
这是为什么?我知道 LinkedLists 既可以用作堆栈(如果您只使用addFirst(E) 和removeFirst()),也可以用作队列(如果您只使用addFirst(E) 和removeLast() 或反之亦然)那为什么像这样?我觉得pop() 应该删除并返回最后一个元素,或者push(E) 应该在LinkedList 的末尾添加元素。那么它会更有意义。
TLDR:为什么LinkedList 的push 和pop 暗示它作为堆栈工作,而LinkedList 实际上实现了Queue。
【问题讨论】:
-
列表本质上既不是堆栈也不是队列,但它可以用作任何一个。
标签: java data-structures linked-list queue