栈和队列都是什么结构_数据结构-栈和队列.md

栈与队列数据结构概述

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

队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表;

1 栈

允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表,栈的数据存储结构分为以下两种。

cf42de2066db0d9b48146c0af35aedf5.png

栈的抽象数据类型分为顺序栈和链式栈两种,栈接口的继承和实现关系如下图

8cab66b7cf86d6496f7e68b0fe7f8cb2.png

1.1 栈的顺序存储结构(顺序栈)

如用数组实现,栈底是下标为0的元素。

9ecb785362ea71d4738f08a73acb0c10.png

1.2 栈的链式存储数据结构(链式栈)

2a80e8707966abb31b4d3ac51cdf5357.png

链栈的入栈

8e817de5b14a95b348e59ac29958aedc.png
094144b08e1821b84ed476290026b4f2.png

链栈的出栈

60f288c840c50de148d6c888e7dc4ccc.png
98532200b2473bc60d9186f497da6cd8.png

1.3 栈的应用场景

** 1、栈是嵌套调用机制的实现基础**

嵌套调用定义:在一个函数中调用另一个函数被称为嵌套调用。

由于函数的调用顺序和返回顺序正好相反,如果借助一个栈“记住”函数从何而来,就能获得函数的返回路径。

当函数被调用的时候操作系统将该函数的有关信息(地址,参数,局部变量等)入栈这个过程称为保护现场

一个函数执行完返回时,出栈,获得调用函数信息,称为恢复现场,程序返回调用函数继续运行。

** 2、 逆波兰表达式 **

定义:

传统的四则运算被称作是中缀表达式,即运算符实在两个运算对象之间的。逆波兰表达式被称作是后缀表达式,表达式是在运算对象的后面。

逆波兰表达式:

a+b ---> a,b,+

a+(b-c) ---> a,b,c,-,+

a+(b-c)d ---> a,b,c,-,d,,+

a+d(b-c)--->a,d,b,c,-,,+

a=1+3 ---> a=1,3 +

http=(smtp+http+telnet)/1024 写成什么呢?

http=smtp,http,+,telnet,+,1024,/

代码实现 :

/** * 计算算数表达式的值 * For example: * ["2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值