【資料結構】回顧棧ADT和隊ADT

nomasp發表於2015-05-07

1.簡單的說,棧就是隻在一個位置上進行插入和刪除操作的表,而這個特殊的位置就是表的末端,但這卻不被成為棧的末端,而是頂(Top)。

2.棧的基本操作時進棧和出棧,英文名分別是push和pop,分別相當於插入和刪除。切記對空棧進行pop和top操作在棧ADT被認為是錯誤的,而如果push在空間之外進行操作也是有實現限制的,但這並不是ADT錯誤。

3.棧的特點是後進先出,對於學生來說可能用食堂裡堆砌起來的餐盤做形容更加合適。

4.棧既可以用單向連結串列來實現,也可以用陣列來實現。用單向連結串列自然是比較簡單的,但用陣列來實現的話,由於可以用vector的back、push_back 和 pop _back,因此也算是比較簡單的。而且用陣列的話,每個棧就會有一個theArray和topOfStack,對於空棧這topOfStack為-1,如果要新增一個元素x,則topOfStack加1,並且theArray[topOfStack]=x。如果要刪除一個元素x,那麼pop函式的返回值就是theArray[topOfStack],還要記得將topOfStack減1。

5.以上的操作都執行得飛快,而且如果是有自增和自減定址功能的暫存器,那麼對整數的push和pop操作都可以寫成一條機器指令哦。

6.所儲存的資訊被稱為活動記錄,或稱為棧幀。

7.關於遞迴,有興趣的話可以看看這一篇,極有可能會擴充你的知識面。

傳送門:【Scheme歸納】3 比較do, let, loop

8.佇列和棧類似,基本上有2個操作:入隊(enqueue),在表的末端(隊尾)插入一個元素;出隊(dequeue),刪除並返回表的頭部(隊頭)的元素。



感謝您的訪問,希望對您有所幫助。

歡迎大家關注或收藏、評論或點贊。


為使本文得到斧正和提問,轉載請註明出處:
http://blog.csdn.net/nomasp


相關文章