【408数据结构与算法】—栈的抽象数据类型定义(十)
?博客主页:王同学要努力
? 本文由 王同学要努力 原创,首发于 CSDN?
?JavaScript专栏推荐:JavaScript专栏,超详细!
? 欢迎点赞 ? 收藏 ⭐留言 ? 如有错误敬请指正!
?越努力 越幸运,愿我们都能在看不见的日子里闪闪发光!✨
一、栈的抽象数据类型的定义


二、栈的表示和实现
由于栈本身就是线性表,于是栈也有顺序存储和链式存储两种实现方式
- 栈的顺序存储—顺序栈
- 栈的链式存储—链式栈
存储方式:同一般线性表的顺序存储结构完全相同,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,栈底一般在低地址端。
- 附设top指针:指示栈顶元素在顺序栈中的位置
- 另设base指针、指示栈底元素在顺序栈中的位置
- 另外,用stacksize表示栈可使用最大的容量
空栈:base==top是栈空标志
栈满:top-base==stacksize
栈满时的处理方法:
- 报错,返回操作系统
- 分配更大的空间,作为栈的存储空间,将原栈的内容移入新栈

使用数组作为顺序存储方式的特点:简单、方便、但易产生溢出(数组大小固定)
上溢(overflow):栈已经满,又要压入元素
下溢(underflow):栈已空,还要弹出元素
?上溢是一种错误,使问题的处理无法解决,而下溢一般认为是一种结束条件,即问题处理结束
三、顺序栈的表示和实现



四、顺序栈的初始化


五、判断顺序栈是否为空


六、求顺序栈的长度

七、清空顺序栈

八、销毁顺序栈

九、顺序栈的入栈
- 判断是否栈满,若满则出错(上溢)
- 元素 e压入栈顶
- 栈顶指针加1

代码实现:
十、顺序栈的出栈
- 判断是否栈空,若空则出错(下溢)
- 获取栈顶元素e
- 栈顶指针减1

代码实现:

版权声明:本文为m0_46374969原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。