參考
棧的定義
棧(stack
)是限制僅在表的一端進行插入和刪除運算的線性表。
(1)通常稱插入、刪除的這一端為棧頂 (
top),另一端稱為棧底 (
bottom
)。
(2)當表中沒有元素時稱為空棧。
(3)棧為後進先出(
last in first out
)的線性表,簡稱為
lifo
表。
棧的修改是按後進先出的原則進行。每次刪除(退棧)的總是當前棧中"
最新"的元素,即最後插入(進棧)的元素,而最先插入的是被放在棧的底部,
要到最後才能刪除。
【示例】元素是以a1,a2
,…,an
的順序進棧,退棧的次序卻是an,
an-1
,…,
a1。
2、棧的基本運算
(1)initstack(s
) 構造乙個空棧s。
(2)stackempty(s
) 判棧空。若s
為空棧,則返回
true
,否則返回
false。
(3)stackfull(s
) 判棧滿。若s
為滿棧,則返回
true
,否則返回
false。
注意: 該運算只適用於棧的順序儲存結構。
(4)push(s
,x)
進棧。若棧s
不滿,則將元素x插入
s的棧頂。
(5)pop(s
)
定義堆疊adt
stackadt
package stack;
public inte***ce stackadt
鏈式實現:
在棧的一段新增和刪除元素,在棧中維護乙個指向棧頂的結點和乙個count
變數指示棧的大小:
private linearnode top; //指向棧頂
private int count;//標記棧的大小
每次出棧和壓棧在鍊錶的表頭:(也可以再表尾,實現方式不一樣而已)
top--->元素
1--->
元素2--->
元素3.........
實現(附帶測試
main
):linkedstack
package stack;
import bag.linearnode;
//為了重點來實現演算法,將異常情況直接列印出然後退出程式,不再宣告異常類
public class linkedstack implements stackadt
public linkedstack()
public int size()
public boolean isempty()
public void push(object element)
public object pop()
object result = top.getelement();
top = top.getnext();
count--;
return result;
}public object peek()
}執行結果:將0到
10依次壓棧
連續執行5
次出棧操作
棧為空嗎?:
false
棧的大小為:
5棧頂元素為:
4棧頂元素為: 4
陣列實現:
棧底總是陣列下標為0
的位置,入棧出棧從陣列下標的最後乙個元素開始:
private object contents;
private int top;//top標記下乙個入棧的位置,同時也表示棧的容量大小,跟鏈式實現的
count
比較一下!!!
實現(附帶測試main
):arraystack
package stack;
public class arraystack implements stackadt
public void expand()
public int size()
public boolean isempty()
public void push(object element)
public object pop()
object result = contents[top-1];
contents[top-1] = null;//出棧
top--;
return result;
}public object peek()
public static void main(string args)
}執行結果:將0到
24依次壓棧,然後連續
10次出棧
棧的大小為:
15棧為空嗎?:
false
棧頂元素為:
14
資料結構 2 棧結構(java實現棧結構)
棧結構是按照 後進先出 last in first out,lifo 的原則處理資料的。在棧結構中,只有棧定的元素是可以訪問的。public class stack 入棧同時棧頂下標加1 public void push int elem else 出棧刪除棧頂元素,同時棧頂元素下標減1 publi...
資料結構實戰java實現棧
在之前的myarraylist和mylinkedlist基礎上都可以很方便的實現棧。先進後出 學習計算機基本要素可以深入了解棧的作用。直接使用arraylist的add方法加乙個代表棧指標的變數即可。由於棧不需要索引所以只需要使用單鏈表即可 public class mystack public a...
資料結構和演算法 java實現棧結構
棧的定義 棧 stack 是限制僅在表的一端進行插入和刪除運算的線性表。1 通常稱插入 刪除的這一端為棧頂 top 另一端稱為棧底 bottom 2 當表中沒有元素時稱為空棧。3 棧為後進先出 last in first out 的線性表,簡稱為 lifo 表。棧的修改是按後進先出的原則進行。每次刪...