棧和隊列是特殊的線性表。
棧:隻允許資料在一個端進行增加和删除操作,存在先進先出的原則。
插入元素為進棧,從棧頂删除元素為出棧。棧最底部元素為棧頂元素,棧頂部元素為棧頂元素。
棧隻允許在棧頂進行增加和删除元素的操作。
先入棧的元素位于棧底,後入位于棧頂。
可以采用數組的形式來實作棧。棧是受限制的線性表,隻允許在棧頂進行元素的删除,插入操作。
鍊棧:
前一個元素的next指向原來位于棧頂的元素,由此類推,直到棧底。
入棧操作:

出棧操作:
java裡面的棧實作:
Stack,基于數組的順序棧實作,線程安全。
LinkedList:既是雙線連結清單結構,同樣也有棧的操作,是棧的鍊式實作,線程不安全。
隊列:
指定資料的進入方向和出去的方向,隊列中的資料總是先進來的先出去。
隊列隻允許在前端删除元素,在後端插入元素。
循環隊列:
首尾相連的隊列,最後個元素下一個為第一個元素。
隊列的鍊式存儲結構以及實作:
插入隊列:
移除隊列:
java集合中的隊列:
JDK 1.5後 queue接口代表一個隊列,提供插入,移除,通路的方法。
ArrayBlockingQueue,LinkedBlockingQueue,PriorityQueue,ConcurrentLinkedQueue,SynchronusQueue.
ArrayBlockingQueue,LinkedBlockingQueue,ConcurrentLinkedQueue線程安全。
雙向隊列:
可在隊列的兩邊進行删除和插入元素的操作。
雙向隊列就是隊列和棧的一種特殊線性表。
還沒寫完,等待明天接着寫,困了,先睡覺