請自行腦補自行車鍊子,就是一種僅定義前後關係的資料結構,基於鍊錶的這種特點,我們可以實現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 出棧 兩種,前者相當於插入,後者相當於刪除最後的元素。棧本質上是一種受限制的表,所以可以使用任何一種表的形式來實現它,最常用的是使用...