鏈棧
棧的鏈式存儲結構稱為鏈棧
鏈棧是沒有附加頭結點的運算受限的單鏈表
鏈棧的類型說明如下
typedef struct stacknode{
DataType data
struct stacknode *next
}StackNode;
typedef struct{
StackNode *top; //棧頂指針
}LinkStack;
注意
①LinkStack結構類型的定義是為了方便在函數體中修改top指針本身
②若要記錄棧中元素個數
(
Void InitStack(LinkStack *S)
{
S
}
(
int StackEmpty(LinkStack *S)
{
return S
}
(
void Push(LinkStack *S
{//將元素x插入鏈棧頭部
StackNode *p=(StackNode *)malloc(sizeof(StackNode));
p
p
S
}
(
DataType Pop(LinkStack *S)
{
DataType x;
StackNode *p=S
if(StackEmpty(S))
Error(
x=p
S
free(p);
return x;
}
(
DataType StackTop(LinkStack *S)
{
if(StackEmpty(S))
Error(
return S
}
注意
鏈棧中的結點是動態分配的
From:http://tw.wingwit.com/Article/program/sjjg/201311/22753.html