java中棧的兩種實現

2021-08-17 21:45:33 字數 1124 閱讀 5735

public

class node

}

請自行腦補自行車鍊子,就是一種僅定義前後關係的資料結構,基於鍊錶的這種特點,我們可以實現

出棧(刪除棧頂)

入棧(新增棧頂)

判空(檢查棧頂元素是否為空)

**如下:

//通過鍊錶實現

public

class stack

return

null;

}public node pop() else

}public

void

push(node n)

}public boolean isempty() else }}

基於陣列:

//通過陣列實現

public

class stack

public

void

push(char

value)

public

char

pop()

public

char

peek()

public boolean isfull()

public boolean isempty()

}

可以看到基於陣列和基於鍊錶實現的棧,在某些方法上的異同,反映出了陣列和鍊錶的一些特性:

從邏輯結構角度來看

a、 陣列必須事先定義固定的長度(元素個數),不能適應資料動態地增減的情況。當資料增加時,可能超出原先定義的元素個數;當資料減少時,造成記憶體浪費。

b、鍊錶動態地進行儲存分配,可以適應資料動態地增減的情況,且可以方便地插入、刪除資料項。(陣列中插入、刪除資料項時,需要移動其它資料項)

從記憶體儲存角度來看

a、(靜態)陣列從棧中分配空間, 對於程式設計師方便快速,但自由度小。

b、 鍊錶從堆中分配空間, 自由度大但申請管理比較麻煩.

效果圖:

棧的兩種實現

順序表實現棧 include include 順序表實現棧 define test head printf n s n function define default sz 5 typedef char datatype typedef struct seqstack seqstack 棧的初始化 ...

棧的兩種實現

棧的基本實現 include stdafx.h include include define maxsize 64 using namespace std 基於陣列實現的棧 class stack 預設建構函式 int push int data 元素入棧 int pop 元素出棧 bool ise...

棧的兩種C 實現

棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧的頂 top 它是後進先出 lifo 的。對棧的基本操作只有push 進棧 和pop 出棧 兩種,前者相當於插入,後者相當於刪除最後的元素。棧本質上是一種受限制的表,所以可以使用任何一種表的形式來實現它,最常用的是使用...