数据结构栈的操作_数据结构之链栈基本操作的实现详解(C语言描述)

迎新过后,来带领你好好学习的小软准时归来,快带着上次学习链表操作的记忆和我开启新的旅程吧:

8aff3274a7f5de3067c8a55aaf430bf4.png

链栈:就是栈的链式存储结构,简称链栈。

首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操作,而且单链表也存在头指针,栈也存在栈顶指针,那么我们能不能想办法让这二者合为一体呢,答案是肯定的。我们直接将栈顶放在单链表的头部,因此单链表中常用的头指针自然也就失去了意义,通常对链栈来讲是不需要头结点的。

对于链栈来讲基本很少出现栈满的情况(除非内存已经被沾满 ),如果这种事情真的发生,那么此时的计算机操作系统也将会面临死机崩溃的情况,那就不单单是这个链栈是否溢出的问题了。对于链表来说,链表为空的表示是头结点指向空,那么对于链栈来讲,链栈为空就是栈顶指针指向空(top = NULL)。

链栈的结构定义 

b798edf8eb6f86e3bed93de63daec30a.png

在这里我们假设elementype为int类型,读者可根据需要自行修改。

链栈的进栈操作算法(类似于链表的插入):

先对数据域进行赋值,然后让新结点指向栈顶指针,最后将栈顶指针交给新节点。

68083e7b1640c6e830106c51d7343cf3.png

链栈的出栈操作算法(类似于链表的删除操作):

现将要删除的元素的值交给临时变量,将栈顶指针交给临时节点(栈只在栈顶进行操作,不用担心其他问题),将栈顶指针下移,最后释放临时节点(即完成删除)。

301c2454a3641d3a4723923085f7ed3f.png

 对于访问来讲,这里我采用了最基本的打印元素的方式来进行访问(即遍历栈,对每个位置上的元素进行打印)。

1a6c6ae5bec08329679619a2d5c43da5.png d81cd86c0536d3d5fc03e4967cfb2295.png

返回栈的大小就是检测元素个数,只需要查看计数器的值即可。

获得栈顶元素的值,直接调用栈,然后打印栈顶元素即可。

f344556fc2607bea1267b47dde4ba195.png

链栈的基本操作你学会了吗?小软可是包教包会的,有问题记得问小软哦,好了现在让我们期待下周的学习内容吧。

fb6be0cc3a65e533c0f85a91b5e90dce.png b4275ab9711a11b87c9d4e9cecdb9a6e.gif

部分图片来源于网络

责任编辑:付子腾   毛丽颖

3f43f9e291d27d8e0c28e4e30540edbc.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值