Python数据结构与算法(3,腾讯&字节&爱奇艺&网易&华为实习面试汇总

本文详细介绍了栈的抽象数据类型定义、基本操作,如初始化、大小判断、空栈检查、入栈出栈等,以及栈在符号匹配、函数调用、后缀表达式求值等场景的应用。同时,文章涵盖了顺序栈和链栈的实现方式,包括它们的初始化、操作时间和复杂度分析。
摘要由CSDN通过智能技术生成

1.2 栈抽象数据类型

除了主要的操作(入栈和出栈)外,栈还具有初始化、判空和取栈顶元素等辅助操作。具体而言,栈的抽象数据类型定义如下:

ADT Stack:

数据对象: D = a i ∣ a i ∈ D a t a T y p e , i = 1 , 2 , . . . , n , n ≥ 0 D={a_i|a_i∈DataType, i=1,2,…,n,n\geq0} D=ai​∣ai​∈DataType,i=1,2,…,n,n≥0

数据关系: R = < a i , a i + 1 > ∣ a i , a i + 1 ∈ D , i = 1 , 2 , . . . , n − 1 R={<a_{i},a_{i+1}>|a_i,a_{i+1}∈D,i=1,2,…,n-1} R=<ai​,ai+1​>∣ai​,ai+1​∈D,i=1,2,…,n−1

a 1 a_1 a1​为栈底元素, a n a_n an​为栈顶元素

基本操作:

1. __itit__(): 初始化栈

创建一个空栈

2. size(): 求取并返回栈中所含元素的个数 n

若栈为空,则返回整数0

3. isempty(): 判断是否为空栈

判断栈中是否存储元素

4. push(data): 入栈

将元素 data 插入栈顶

5. pop(): 出栈

删除并返回栈顶元素

4. peek(): 取栈顶元素

返回栈顶元素值,但并不删除元素

1.3 栈的应用场景

栈具有广泛的应用场景,例如:

  • 符号的匹配,具体描述参考第3.3小节;

  • 函数调用,每个未结束调用的函数都会在函数栈中拥有一块数据区,保存了函数的重要信息,包括函数的局部变量、参数等;

  • 后缀表达式求值,计算后缀表达式只需一个用于存放数值的栈,遍历表达式遇到数值则入栈,遇到运算符则出栈两个数值进行计算,并将计算结果入栈,最后栈中保留的唯一值即为表达式结果;

  • 网页浏览中的返回按钮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值