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

简介: 由于栈本身就是线性表,于是栈也有顺序存储和链式存储两种实现方式

一、栈的抽象数据类型的定义

2345_image_file_copy_207.jpg

2345_image_file_copy_208.jpg

二、栈的表示和实现

由于栈本身就是线性表,于是栈也有顺序存储和链式存储两种实现方式

  • 栈的顺序存储—顺序栈
  • 栈的链式存储—链式栈

存储方式:同一般线性表的顺序存储结构完全相同,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,栈底一般在低地址端。

  • 附设top指针:指示栈顶元素在顺序栈中的位置
  • 另设base指针、指示栈底元素在顺序栈中的位置
  • 另外,用stacksize表示栈可使用最大的容量

空栈:base==top是栈空标志

栈满:top-base==stacksize

2345_image_file_copy_209.jpg

栈满时的处理方法:

  • 报错,返回操作系统
  • 分配更大的空间,作为栈的存储空间,将原栈的内容移入新栈

2345_image_file_copy_210.jpg

使用数组作为顺序存储方式的特点:简单、方便、但易产生溢出(数组大小固定)

  • 上溢(overflow):栈已经满,又要压入元素
  • 下溢(underflow):栈已空,还要弹出元素

🧨上溢是一种错误,使问题的处理无法解决,而下溢一般认为是一种结束条件,即问题处理结束

三、顺序栈的表示和实现

2345_image_file_copy_211.jpg

2345_image_file_copy_212.jpg

2345_image_file_copy_213.jpg

四、顺序栈的初始化

2345_image_file_copy_214.jpg

2345_image_file_copy_215.jpg

五、判断顺序栈是否为空

2345_image_file_copy_216.jpg

2345_image_file_copy_217.jpg

六、求顺序栈的长度

2345_image_file_copy_218.jpg

七、清空顺序栈

2345_image_file_copy_219.jpg

八、销毁顺序栈

2345_image_file_copy_220.jpg

九、顺序栈的入栈

  • 判断是否栈满,若满则出错(上溢)
  • 元素 e压入栈顶
  • 栈顶指针加1

2345_image_file_copy_221.jpg

代码实现:

2345_image_file_copy_222.jpg

十、顺序栈的出栈

  • 判断是否栈空,若空则出错(下溢)
  • 获取栈顶元素e
  • 栈顶指针减1

2345_image_file_copy_223.jpg

代码实现:

2345_image_file_copy_224.jpg


相关文章
|
8月前
|
机器学习/深度学习 人工智能 算法
DeepSeek深度解析:一场「通用人工智能」的觉醒革命
DeepSeek,由幻方量化打造的国产大模型,正以彗星般的速度革新AI领域。它不仅刷新了中文AI技术基准,还在底层架构上实现颠覆性突破。文章从技术逻辑、产业影响和未来挑战三个维度解析这场AI革命。DeepSeek采用多模态神经网络设计,融合异构数据,展现通感能力;引入动态神经元编织与具身智能,提升参数效率。其混合架构在数学推理中表现卓越,并通过认知卸载机制优化长文本处理。DeepSeek正在重塑金融投研范式,推动AI原生开发模式,同时引发对伦理与硬件限制的深思。最终,DeepSeek重新诠释了“智能”本质,促使人类与AI共同进化为认知伙伴。
423 8
|
搜索推荐 前端开发 JavaScript
计算机Java项目|图书个性化推荐系统的设计与实现
计算机Java项目|图书个性化推荐系统的设计与实现
256 0
|
数据采集 数据挖掘 Python
2024年最新【Python从零到壹】Python模块介绍与使用,面试的时候答不上来
2024年最新【Python从零到壹】Python模块介绍与使用,面试的时候答不上来
2024年最新【Python从零到壹】Python模块介绍与使用,面试的时候答不上来
|
Python PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(四)(1)
PyTorch 2.2 中文官方教程(四)
163 0
PyTorch 2.2 中文官方教程(四)(1)
|
存储 SQL 缓存
SQL优化实战-0002:select查询不建议使用星号(select *),最好指定具体查询字段
SQL优化实战-0002:select查询不建议使用星号(select *),最好指定具体查询字段
640 0
|
设计模式 运维 Java
面向对象高级
面向对象高级
143 0
|
人工智能 监控 安全
基于Springcloud微服务框架 +VUE框架开发的智慧工地系统源码
基于Springcloud微服务框架 +VUE框架开发的智慧工地系统源码
166 0
|
监控 Java Android开发
【字节码插桩】AOP 技术 ( “字节码插桩“ 技术简介 | AspectJ 插桩工具 | ASM 插桩工具 )
【字节码插桩】AOP 技术 ( “字节码插桩“ 技术简介 | AspectJ 插桩工具 | ASM 插桩工具 )
594 0
【字节码插桩】AOP 技术 ( “字节码插桩“ 技术简介 | AspectJ 插桩工具 | ASM 插桩工具 )
|
小程序
微信小程序判断是否有新版本并且自动更新
微信小程序判断是否有新版本并且自动更新