Java實現棧結構

2021-07-30 13:44:08 字數 2674 閱讀 1930

參考

棧的定義 

棧(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 表。棧的修改是按後進先出的原則進行。每次刪...