在我的数据结构类中,我了解到LinkedList
是一个队列。就像现实生活中的一条线一样,进入该线的第一个人将成为第一个离开的人。说得通。如下所示,ListedList
实现了具有FIFO(先进先出)过程的Queue
。Java - LinkedList push()pop()意味着它是一个堆栈,而不是一个队列?
但是,如果你看一下描述的方法push(E)
和pop()
,他们读如下:
推(E)
将元素推入此列表所表示的堆栈。换句话说,将该元素插入此列表的前面。
弹出()
从此列表所表示的堆栈弹出一个元素。换句话说,删除并返回此列表的第一个元素。
这是....不是队列。这是一个堆栈。通过push
进入LinkedList的第一个元素不能被pop
访问,直到每个元素在pop()
之后添加为止。
这是为什么?我得到LinkedLists既可以作为堆栈使用(如果你只使用addFirst(E)
和removeFirst()
),并可以用作队列(如果你只使用addFirst(E)
和removeLast()
或反之亦然),那么为什么它是这样呢?我觉得pop()
应该删除并返回最后一个元素,或者push(E)
应该在LinkedList
的末尾添加元素。那么它会更有意义。
TLDR:为什么LinkedList
的push
和pop
意味着它可以作为一个堆栈时LinkedList
实际实现Queue
来代替。
列表既不是堆栈也不是队列,但它可以用作任何一个。 – chrylis