天天看點

資料結構之棧和隊列

棧和隊列是特殊的線性表。

棧:隻允許資料在一個端進行增加和删除操作,存在先進先出的原則。

插入元素為進棧,從棧頂删除元素為出棧。棧最底部元素為棧頂元素,棧頂部元素為棧頂元素。

棧隻允許在棧頂進行增加和删除元素的操作。

先入棧的元素位于棧底,後入位于棧頂。

可以采用數組的形式來實作棧。棧是受限制的線性表,隻允許在棧頂進行元素的删除,插入操作。

鍊棧:

前一個元素的next指向原來位于棧頂的元素,由此類推,直到棧底。

入棧操作:

資料結構之棧和隊列

出棧操作:

資料結構之棧和隊列

java裡面的棧實作:

Stack,基于數組的順序棧實作,線程安全。

LinkedList:既是雙線連結清單結構,同樣也有棧的操作,是棧的鍊式實作,線程不安全。

隊列:

指定資料的進入方向和出去的方向,隊列中的資料總是先進來的先出去。

隊列隻允許在前端删除元素,在後端插入元素。

循環隊列:

首尾相連的隊列,最後個元素下一個為第一個元素。

隊列的鍊式存儲結構以及實作:

插入隊列:

資料結構之棧和隊列

移除隊列:

資料結構之棧和隊列

java集合中的隊列:

JDK 1.5後 queue接口代表一個隊列,提供插入,移除,通路的方法。

ArrayBlockingQueue,LinkedBlockingQueue,PriorityQueue,ConcurrentLinkedQueue,SynchronusQueue.

ArrayBlockingQueue,LinkedBlockingQueue,ConcurrentLinkedQueue線程安全。

雙向隊列:

可在隊列的兩邊進行删除和插入元素的操作。

資料結構之棧和隊列

雙向隊列就是隊列和棧的一種特殊線性表。

還沒寫完,等待明天接着寫,困了,先睡覺