【摘要】:lst->next==NULL2)栈满状态。两个操作1)元素进栈操作。大家还需注意,在考研中考察链栈代码的频率要比顺序栈少得多。顺序栈定义简单,操作也简单得多,因此在此提醒大家,对于程序设计题,如果你有10份时间,把7份用在顺序栈题目上,3份用在链栈题目上,这是一个比较恰当的时间分配比例。
1.链栈的要素
和顺序栈对应,链栈也有4个要素,包括两个特殊状态和两个操作。
(1)两个状态
1)栈空状态。
lst->next==NULL
2)栈满状态。
不存在栈满的情况(假设内存无限大的情况下不存在。一般题目要求不太严格,可以这么认为)。
(2)两个操作
1)元素(由指针p所指)进栈操作。
p->next=lst->next;lst->next=p;//其实就是头插法建立链表中的插入操作(www.daowen.com)
2)出栈操作(出栈元素保存在x中)。
p=lst->next;x=p->data;lst->next=p->next;free(p);//其实就是单链表的删除操作
2.链栈的初始化代码
3.判断栈空代码
当栈空时返回1,否则返回0,代码如下:
4.进栈代码
5.出栈代码
在栈不空的情况下可以执行,返回1,否则返回0,代码如下:
说明:对于链栈,和顺序栈一样,在应对考试的时候,不必像以上那样严格地写出其操作的函数,只需摘取其中必要的语句组合在自己的题目代码中即可,具体思路类似于顺序栈中的讲解。大家还需注意,在考研中考察链栈代码的频率要比顺序栈少得多。顺序栈定义简单,操作也简单得多,因此在此提醒大家,对于程序设计题,如果你有10份时间,把7份用在顺序栈题目上,3份用在链栈题目上,这是一个比较恰当的时间分配比例。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关2019版数据结构高分笔记的文章