(1) 子程式的呼叫:在跳往子程式前,會先將下個指令的位址存到堆疊中,直到子程式執行完後再將位址取出,以回到原來的程式中。
(2) 處理遞迴呼叫:和子程式的呼叫類似,只是除了儲存下乙個指令的位址外,也將引數、區域變數等資料存入堆
棧中。(3) 表示式的轉換[中綴表示式轉字尾表示式]與求值(實際解決)。
(4) 二叉樹的遍歷。
(5) 圖形的深度優先(depth 一 first)搜尋法。
1.陣列實現棧
定義乙個陣列模擬棧。maxsize表示最大的容量
top指標指向stack的頂部
實現的具體**
public
class
arraystack
//判斷棧是否滿
public
boolean
isfull()
//判斷棧是否為空
public
boolean
isempty()
//入棧
public
void
push
(int a)
top++
; arr[top]
=a;}
//出棧
public
intpop()
int value=arr[top]
; top--
;return value;
}@override
public string tostring()
';}}
2.用鍊錶實現棧
public
class
liststack
public
liststack()
//獲取長度
public
intlength()
//判斷是否為空
public
boolean
isempty()
//入棧
public
void
push
(t data)
//出棧
public t pop()
head.next=head.next.next;
n--;return vaule;
}//結點類
資料結構基礎之棧
棧 一種操作受限的線性表,只允許在一端插入和刪除資料。漢諾塔你有沒有玩過,每根柱子上的碟子每次只能操作最上層的乙個,或者,你可以想象平時生活中的盤子的堆疊方式,每次我們使用時都是從最上層拿乙個,放的時候也是放在最上次,這種型別的結構就是典型的棧結果,滿足,後進先出 先進後出的特點,這也是棧的資料結構...
資料結構基礎之棧
資料結構之棧結構 1.棧的特點 相比於乙個普通的陣列,棧控制了操作的方法,元素只能在棧頂入棧,也只能在棧頂出棧。2.棧的用途 在深入優先搜尋 dfs 中會用到,比如現在有乙個圖如下 現在要從a出發要遍歷整張圖,那麼首先看與a相連的b d,任選乙個,比如b,那麼要先儲存a,將其壓入棧,然後遍歷b,b又...
資料結構之棧實現
ps 棧用類實現比較好,可以同時管理多種資料結構。不過對於剛剛接觸的我來說,就看著數,按著書上的流程走吧。我會盡力把棧的特點講解清楚,以後有了更深入的了解,我會再來補充的。逆波蘭表示法 是一種將運算子寫在運算元後面的描述程式 算式 的方法。舉個例子,我們平常用中綴表示法描述的算式 1 2 5 4 改...