在我的数据结构课上,我学到一个 LinkedList 是一个队列。就像现实生活中的一条线,第一个进入队列的人将是第一个离开队列的人。很有道理。如下所示,ListedList 实现了一个 Queue,它具有 FIFO(先进先出)过程。
但是,如果你看一下 push(E) 和 pop() 方法的描述,它们读起来如下: push(E)
将元素推送到由此列表表示的堆栈上。换句话说,在此列表的前面插入元素。 pop()
从由此列表表示的堆栈中弹出一个元素。换句话说,删除并返回此列表的第一个元素。
那不是队列。那是一个堆栈。通过 push 添加到 LinkedList 中的第一个元素直到每个添加在它之后的元素都被弹出后,才能通过 pop 访问。
为什么会这样呢?我知道LinkedList既可以作为堆栈使用(如果只使用
简而言之:为什么
但是,如果你看一下 push(E) 和 pop() 方法的描述,它们读起来如下: push(E)
将元素推送到由此列表表示的堆栈上。换句话说,在此列表的前面插入元素。 pop()
从由此列表表示的堆栈中弹出一个元素。换句话说,删除并返回此列表的第一个元素。
那不是队列。那是一个堆栈。通过 push 添加到 LinkedList 中的第一个元素直到每个添加在它之后的元素都被弹出后,才能通过 pop 访问。
为什么会这样呢?我知道LinkedList既可以作为堆栈使用(如果只使用
addFirst(E)
和removeFirst()
),也可以作为队列使用(如果只使用addFirst(E)
和removeLast()
或反之亦然),那么为什么会这样呢?我觉得pop()
应该删除并返回最后一个元素,或者push(E)
应该将元素添加到LinkedList
的末尾。那样就更有意义了。简而言之:为什么
LinkedList
的push
和pop
表明它像堆栈一样工作,而实际上LinkedList
实现的是Queue
。