1. 程式人生 > >java中的資料結構——棧

java中的資料結構——棧

棧的工作原理,後進先出。
棧,佇列是比陣列和其他資料結構更抽象的結構,主要通過介面對棧,佇列進行定義,而他們的主要實 現機制對使用者是不可見的。
棧的主要機制可以用陣列來實現,也可以用連結串列來實現。優先順序佇列的內部 實現可以用陣列或一種特殊的樹(堆)來實現。 棧只允許訪問一個數據項,即最後插入的資料項。
棧的應用,比如呼叫一個方法時,把它的返回地址和 引數壓入棧,當方法結束返回時,那些資料出棧。
操作,new(新建)push(入棧),pop(出棧),peek(檢視),isEmpty,top
入棧:如果棧滿了,還想繼續插入資料,就會報錯,理論上,ADT定義的棧是不會滿的,但陣列實現的棧 會滿。
出棧:棧空時,還想彈出一個數據項,就會報錯。
java語言中,對棧來說,發現這些錯誤的一個好的方 法是丟擲異常,異常可以被使用者捕獲並處理。
檢視:只需要讀取棧頂元素的值,而不移除它,這個資料沒有出棧,而且只能檢視棧頂元素。
棧的容量

:棧通常很小,是臨時的資料結構。
棧的效率:資料項入棧和出棧的時間複雜度都為常數O(1),即棧操作所耗費的時間不依賴於棧中資料項的 個數,因此操作時間很短。棧不需要比較和移動操作。
實戰
對棧的元素進行排序: 一個棧中元素的型別為整形,現在想將該棧從頂到底按從大到小的順序排序,只許申請一個棧,除此之外,可以申請新的變數來儲存臨時變數,但不能申請額外的資料結構。
程式碼操作如下:
在這裡插入圖片描述
輸出結果如下:
在這裡插入圖片描述

上一篇:java中的資料結構——陣列
下一篇:java中的資料結構——圖