数据结构笔记(3)栈与队列

#这篇文章只作为个人的读书笔记,内容均来自书本,请勿转载

定义:

栈:是限定仅在表尾进行插入和删除操作的线性表

栈顶:允许插入和删除的一端

栈底:不允许插入和删除的一端

进栈:插入操作

出栈,弹栈:删除操作


进栈出栈的变化形式:

3个元素有5种出栈次序:1、123进321出2、1进1出,2进2出,3进3出 3、。。。


栈的抽象数据类型(本质是线性表):


线性存储结构和链式存储结构对栈都是适用的


栈的顺序存储结构和实现:


进栈操作:

1、栈顶指针加一

2、插入数据

出栈操作:

1、取出栈顶元素

2、栈顶指针减一


两栈共享空间:




栈的链式储存结构及实现(链栈):

进栈操作:






出栈操作:


空间复杂度分析:

顺序栈和链栈的时间复杂度都是O(1),空间复杂度,顺序栈需要实现确定一个固定的长度,可能会浪费空间,优势是存取定位方便,而链栈要求每个元素都有指针域,增加了内存开销,对于栈的长度无限制。


栈的作用:

栈的引入简化了程序设计的问题,划分了不同的关注层次,是思考范围缩小,更加聚焦于我们要解决问题的核心。


栈的应用——递归:

斐波那契额数列:

普通函数:


递归函数:


递归定义:

把直接调用自己或通过一系列的调用语句间接地调用自己的函数称为递归函数。(必须有条件停止递归)

栈实现: 编译器使用栈来实现上面程序,在前行阶段,对于每一层递归,函数的局部变量、参数值以及返回地 址都被压入栈中,在退回阶段,位于栈顶的局部变量、参数值和返回地址被弹出,用于返回调用层次 中执行代码的其余部分,也就是恢复了调用的状态。

栈的应用——四则运算表达式的求值:

后缀(逆波兰)表示法的定义:

转化----->

计算:





中缀表达式转后缀表达式:



队列

队列的定义:

队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表(FIFO),允许插入的一端成为队尾,允许删除的一端称为队头。


队列的抽象数据模型:


循环队列:





队列的链式储存结构及实现:

























































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值