【408数据结构与算法】—栈的抽象数据类型定义(十)

【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版权协议,转载请附上原文出处链接和本声明。