在我的數據結構類中,我瞭解到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