链栈的定义:栈的链式存储结构
栈顶:允许插入和删除的一端称为栈顶(top)
栈底:栈顶的另外一端称为栈底(bottom)
空栈:不含任何元素的栈称为空栈
链栈的部分特点:
1)不会存在满栈的情况
2)链栈不需要头结点
3)空栈的时候,top=NULL
4)后进先出的线性表 LIFO结构
5)进栈:栈的插入操作,也叫压栈,入栈
6)出栈:栈的删除操作,也叫弹栈
trpedef struct StackNode
{
int data;
struct StackNode *next;
}Node,*Nodeptr;
typedef struct
{
Nodeptr top;
int count;
}LinkStack;
其中,top是指向第一个节点的位置,count表示链栈中的元素数目。
接下来是链栈的一些基础操作:
创建链栈:
InitStack(LinkStack *S)
{
S->top=(Nodeptr)malloc(sizeof(Node));
if(S->top == NULL)
return 0;
else
{
S->top=NULL;
S->count=0;
return 1;
}
}
链栈的置空:
int ClearStack(LinkStack *S)
{
Nodeptr p,q;
p=S->top;
while(p != NULL)
{
q=p;
p=p->next;
free(q);
}
S->count=0;
return 1;
}
入栈操作:
int push(LinkStack *S,int e)
{
Nodeptr s;
s=(Nodeptr)malloc(sizeof(Node));
s->data=e;
s->next=S->top;
S->top=s;
S->count++;
return 1;
}
出栈操作:
int pop(LinkStack *S,int *e)
{
Nodeptr p;
if(S->count == 0)
return 0;
else
{
*e=S->top->data;
p=S->top;
S->top=S->top->next;
free(p);
S->count--;
return 1;
}
}
以上.