铜仁市论坛

首页 » 分类 » 分类 » 数据结构之链栈基本操作的实现详解C语言
TUhjnbcbe - 2020/12/13 17:09:00
克白灵苏孜阿甫片 http://pf.39.net/bdfyy/bdfhl/140219/4340655.html

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

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

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

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

链栈的结构定义

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

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

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

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

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

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

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

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

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

部分图片来源于网络

责任编辑:付子腾毛丽颖

预览时标签不可点收录于话题#个上一篇下一篇
1
查看完整版本: 数据结构之链栈基本操作的实现详解C语言