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数据结构与算法—栈的抽象数据类型定义的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法目录

408数据结构与算法—链栈的表示和实现

408数据结构与算法—链栈的表示和实现

数据结构与算法学习笔记 栈和队列Ⅰ

java数据结构与算法之栈(Stack)设计与实现

408数据结构与算法—线性表的定义和分析