【資料結構】回顧棧ADT和隊ADT
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
相關文章
- 【資料結構】回顧表ADT資料結構
- Lab2 - ADT&OOP 回顧總結OOP
- 棧 ADT 【資料結構與演算法分析 c 語言描述】資料結構演算法
- 【資料結構】回顧表、棧、佇列資料結構佇列
- 資料結構與演算法分析筆記(c++)_抽象資料型別(ADT)、表ADT、STL中的向量和表資料結構演算法筆記C++抽象資料型別
- 抽象資料型別(ADT)抽象資料型別
- 佇列 ADT 【資料結構與演算法分析 c 語言描述】佇列資料結構演算法
- 經典資料結構和演算法回顧資料結構演算法
- JavaScript 資料結構之隊棧互搏JavaScript資料結構
- 【資料結構】回顧二叉樹資料結構二叉樹
- Android SDK版本和ADT版本Android
- ADT下載地址(含各版本),最新ADT-23.0.6
- 【資料結構】回顧優先佇列(堆)資料結構佇列
- android adt bundleAndroid
- 雜湊表 ADT 分離連結法【資料結構與演算法分析 c 語言描述】資料結構演算法
- 資料結構—棧和佇列資料結構佇列
- 資料結構(棧和佇列)資料結構佇列
- 【資料結構】--棧和佇列資料結構佇列
- 資料結構與演算法分析(c 語言描述)多項式 ADT 單連結串列實現資料結構演算法
- ADT基礎(三)—— HashMapHashMap
- 資料結構與演算法分析(c 語言描述)多項式 ADT 陣列實現資料結構演算法陣列
- 資料結構-棧資料結構
- 資料結構 - 棧資料結構
- 資料結構之棧和佇列資料結構佇列
- 資料結構和演算法總結--棧資料結構演算法
- Link方式安裝ADT
- ADT & OOP-等價性OOP
- 資料結構之「棧」資料結構
- 資料結構之——棧資料結構
- javascript資料結構 -- 棧JavaScript資料結構
- 資料結構之棧資料結構
- 資料結構(1):棧資料結構
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列
- 資料結構二之棧和佇列資料結構佇列
- 二叉樹 & 二叉查詢樹 ADT【資料結構與演算法分析 c 語言描述】二叉樹資料結構演算法
- 二叉樹 & 二叉查詢樹 ADT [資料結構與演算法分析 c 語言描述]二叉樹資料結構演算法
- 資料結構與演算法-資料結構(棧)資料結構演算法
- eclipse安裝ADT外掛Eclipse