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),刪除並返回表的頭部(隊頭)的元素。
資料結構 棧ADT
棧 stack 是限定僅在表尾插入和刪除操作的線性表 允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 我們可以模擬手槍彈夾,瀏覽器的後退和前進等等都是棧 棧的插入操作,稱為進棧,也稱壓棧 入棧 push 棧的刪除操作,稱為出棧,也稱為彈棧 pop 棧本身就是乙個線性表,線性表的順...
資料結構 回顧表ADT
1.對於表的所有操作來說,都可以使用陣列來實現,而且陣列雖然是靜態分配的,但內部儲存陣列的vector類卻允許在需要時將陣列的大小增加一倍。2.正是因為陣列的實現,使得printlist以線性時間來執行,而findkth甚至是通過常數時間。最不濟的是插入和刪除了,如果位置不好,比如說在0號位置插入就...
資料結構 順序棧ADT
抽象資料型別 abstract data type,adt 是電腦科學中具有類似行為的特定類別的資料結構的數學模型 或者具有類似語義的一種或多種程式語言的資料型別。抽象資料型別是間接定義的,通過其上的可執行的操作以及這些操作的效果的數學約束 與可能的代價 維基百科 ifndef stack h in...