Posted on 2009-08-03 18:19
saobaolu 閱讀(663)
評論(0) 編輯 收藏 所屬分類:
java基礎(chǔ)與算法
棧(stack)在計算機科學(xué)中是限定僅在表尾進行插入或刪除操作的線形表。
棧是一種數(shù)據(jù)結(jié)構(gòu),它按照先進后出的原則存儲數(shù)據(jù),先進入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時候從棧頂開始彈出數(shù)據(jù)(最后一個數(shù)據(jù)被第一個讀出來)。
棧是只能在某一端插入和刪除的特殊線性表。用桶堆積物品,先堆進來的壓在底下,隨后一件一件往堆。取走時,只能從上面一件一件取。堆和取都在頂部進行,底部一般是不動的。
棧就是一種類似桶堆積物品的數(shù)據(jù)結(jié)構(gòu),進行刪除和插入的一端稱棧頂,另一堆稱棧底。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。 棧也稱為后進先出表(LIFO表)。
1、進棧(PUSH)算法
①若TOP≥n時,則給出溢出信息,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢出;不滿則作②);
②置TOP=TOP+1(棧指針加1,指向進棧地址);
③S(TOP)=X,結(jié)束(X為新進棧的元素);
2、退棧(POP)算法
①若TOP≤0,則給出下溢信息,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢;不空則作②);
②X=S(SOP),(退棧后的元素賦給X);
③TOP=TOP-1,結(jié)束(棧指針減1,指向棧頂)。
棧可以用來在函數(shù)調(diào)用的時候存儲斷點,做遞歸時要用到棧!
沒有所謂的命運,只有不同的選擇!