您的位置:首页 > 其它

链栈的基本操作!

2018-01-22 21:09 543 查看
链栈:栈的链式存储结构

链栈的部分特点:

1)不会存在满栈的情况

2)链栈不需要头结点

3)空栈的时候,top=NULL;

链栈的基础结构:

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;
}
}


以上.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链栈