小白的数据结构与算法学习笔记(十一)----栈的链式存储结构及其相关操作

栈的链式存储结构比较简单,将它与单链表做个对比来看:栈顶相当于单链表的表头,top指针相当于单链表的头指针,不存在头结点,简单来说,这里的s->top指向栈顶的第一个元素。

先来看一下整个栈链的定义:

typedef struct LinkStack

         LinkStackPtr top;//充当头指针

        int count;

}

 

再来看一下栈链的结点的定义:

typedef struct StackNode

{

         ElemType data;

         struct StackNode *next;

}StackNode,* LinkStackPtr;

还是两块,一块存放栈的数据,一块存放指针,指向下一个元素。

下面我们来了解一下进栈与出栈在链式结构下的操作。

1、进栈

申请空间给结点p,p中存放数据e,p->data=e,进行下列操作:

p->next=s->top;

s->top=p;

最后不要忘记给s中的计数器加1,s->count++;

2、出栈

用p结点存放被删结点,释放p,计数器减1即可。

p=s->top;

s->top=p->next;

free(p);

s->count--;

注:栈只能在栈顶进行操作,所以只需要对s->top进行移动即可。

                                                                                                                                                              BY   ZJQ

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值