棧是一種只允許在一端進行插入和刪除操作的線性表,在表中只允許進行插入和刪除的一端稱為棧頂,另一端稱為棧底。
棧具有「先進後出」的特性,即,先入棧的被壓入棧底,後入棧的在棧頂。
棧的儲存結構有兩個,順序儲存和鏈式儲存。
(1)棧的順序儲存結構
利用順序儲存方式實現的棧稱為順序棧。棧中資料元素用乙個預設的足夠長度的一維陣列來實現。棧頂隨著插入和刪除而變化。
順序棧的型別描述如下:
typedef
struct seqstack;
定義乙個指向順序棧的指標: seqstack *s;
示意圖:
順序棧基本操作
1.初始化
置空棧:初始化棧頂指標。
/*初始化*/
seqstack *initstack()
2.進棧:首先判斷棧是否滿了,如果棧滿,返回false。否則進棧。
/*進棧*/
void push( seqstack *s, datatype x )else
}
3.取棧頂元素
/*取棧頂元素*/
int topstack( seqstack *s )else
}
4.判斷棧是否為空
/*判斷棧是否為空*/
int isempty( seqstack *s )else
}
5.出棧
/*出棧*/
void pop( seqstack *s, datatype *x )else
}
(2)棧的鏈式儲存方式
鏈式棧的型別描述如下:
typedef
struct stacknodestacktype;
示意圖:
鏈式棧的基本操作
入棧
//入棧
int push(stacktype *top, elemtype x)
//申請乙個結點
p->
data
= x;
p->next = top->next;
top->next = p;
return
true;
}
出棧
//出棧
elemtype pop(stacktype *top)
p = top->next;
top->next = p->next;
x = p->
data;
free(p);
return x;
}
(完) 棧 的基本操作。
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...