408数据结构与算法—栈的抽象数据类型定义
Posted 王同学要努力
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了408数据结构与算法—栈的抽象数据类型定义相关的知识,希望对你有一定的参考价值。
【408数据结构与算法】—栈的抽象数据类型定义(十)
🎬 博客主页:王同学要努力
🎥 本文由 王同学要努力 原创,首发于 CSDN🙉
🌲 javascript专栏推荐:JavaScript专栏,超详细!
🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📆 越努力 越幸运,愿我们都能在看不见的日子里闪闪发光!✨
一、栈的抽象数据类型的定义
二、栈的表示和实现
由于栈本身就是线性表,于是栈也有顺序存储和链式存储两种实现方式
- 栈的顺序存储—顺序栈
- 栈的链式存储—链式栈
存储方式:同一般线性表的顺序存储结构完全相同,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,栈底一般在低地址端。
- 附设top指针:指示栈顶元素在顺序栈中的位置
- 另设base指针、指示栈底元素在顺序栈中的位置
- 另外,用stacksize表示栈可使用最大的容量
空栈:base==top是栈空标志
栈满:top-base==stacksize
栈满时的处理方法:
- 报错,返回操作系统
- 分配更大的空间,作为栈的存储空间,将原栈的内容移入新栈
使用数组作为顺序存储方式的特点:简单、方便、但易产生溢出(数组大小固定)
-
上溢(overflow):栈已经满,又要压入元素
-
下溢(underflow):栈已空,还要弹出元素
🧨上溢是一种错误,使问题的处理无法解决,而下溢一般认为是一种结束条件,即问题处理结束
三、顺序栈的表示和实现
四、顺序栈的初始化
五、判断顺序栈是否为空
六、求顺序栈的长度
七、清空顺序栈
八、销毁顺序栈
九、顺序栈的入栈
- 判断是否栈满,若满则出错(上溢)
- 元素 e压入栈顶
- 栈顶指针加1
代码实现:
十、顺序栈的出栈
- 判断是否栈空,若空则出错(下溢)
- 获取栈顶元素e
- 栈顶指针减1
代码实现:
以上是关于408数据结构与算法—栈的抽象数据类型定义的主要内容,如果未能解决你的问题,请参考以下文章