三.棧的鏈式儲存結構
棧是只允許在一端進行插入或刪除操作的線性表;
棧頂是指線性表允許進行插入或刪除的一端;
棧底是固定的,是不允許進行插入或刪除的另一端。
#define maxsize 10
//定義棧中元素的最大個數;
typedef
struct
sqstack;
棧頂指標分為兩種方式
//第一種方式top=-1
//初始化棧
void
initstack
(sqstack &s)
bool
stackempty
(sqstack s)
void
teststack()
//進棧操作之新元素入棧
bool
push
(sqstack &s,elemtype x)
//出棧操作
//注:資料還殘留在記憶體中,只是邏輯上被刪除了
bool
pop(sqstack &s,elemtype &x)
//讀棧頂元素
bool
gettop
(sqstack s,elemtype &x)
//第二種方式top=0,即top指向下乙個可以插入的位置
//判斷棧空
s.top==0;
//進棧
s.data[s.top++
]=x;
//出棧
x=s.data[
--s.top]
;//棧滿條件
top==maxsize;
//共享棧,即兩個棧共享一片空間
#define maxsize 10
typedef
struct
shstack;
void
initstack
(shstack &s)
//判滿條件
s.top0+
1==s.top1;
鏈棧操作類似單鏈表(請參照單鏈表的基本操作)
進棧以及出棧都只能在棧頂的一端進行(鏈頭作為棧頂)
typedef
struct linknode
*listack;
//棧型別定義
棧 的基本操作。
include include typedef struct node node,pnode typedef struct stack stack,pstack void initialize pstack mystack 棧的初始化。int push stack pstack mystack,in...
棧的基本操作
描述 棧是一種重要的資料結構,它具有push k和pop操作。push k是將數字k加入到棧中,pop則是從棧中取乙個數出來。棧是後進先出的 把棧也看成橫向的乙個通道,則push k是將k放到棧的最右邊,而pop也是從棧的最右邊取出乙個數。假設棧當前從左至右含有1和2兩個數,則執行push 5和po...
棧的基本操作
下面先實現站的基本功能,最後通過乙個test來測試下方法是否實現 建個.c檔案 typedef struct seqstack 初始化 seqstack seqstackinit return null 判斷棧是否為空 int seqstackisempty seqstack s void seqs...