浙江信息技术选考选修一数据结构3.3栈操作与应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

栈应用1:十进制数转换为二进制数
st=[-1]*100
#初始值为0
top=-1
num=int(input(“输入十进制数”))
while num!=0:
stop+=1
st[top]=num%2
#将余数放入栈
num=num//2
while top!=-1:
print(st[top],end=“”)
stop-=1
if top>=0: flag=False
if flag: print("该数学表达式括号匹配")
else: print("该数学表达式括号不匹配")}
逆波兰式
6 8 2 – 2 * 3 ÷ + 6+(8-2)*2÷3 运算符置于运算对象之后
2
(2)扫描结束,栈中还有左括
1
号,不匹配
((a+b)*3+2)
0
(3)扫描结束,栈空,匹配
栈应用2:括号匹配
二、设计算法 (1)设置一个栈st和栈顶指针top (2)从左往右处理数学计算式,遇到左括号,top的值加1, 并将其压入栈中;若是右括号:
①如果top大于-1,把栈顶的左括号弹出,top的值减1 ②如果top等于-1,栈为空,输出不匹配 (3)如果数学计算式处理完毕,top大于-1,栈中还有未匹 配的左括号,输出不匹配
top=top+1 st[top]=”A” top=top+1 st[top]=”B” top=top+1 st[top]=”C” top=top+1 st[top]=”D”
#top=0 #a入栈,top指向a的位置
#top=1 #b入栈,top指向b的位置
#top=2 #c入栈,top指向c的位置
栈应用2:括号匹配
一、抽象与建模 将表达式中数字和运算符号忽略,直接判断左右括号的数量和位置 是否匹配,判断过程用栈结构来实现:若出现左括号则进栈,右括 号则把栈顶的左括号出栈,判断是否匹配,分下列3种情况:
栈应用2:括号匹配
(a+b)*3+2)
(1)栈空,出现右括号,不匹配
3
((a+b)*3+2
#top=3 #d入栈,top指向d的位置
栈的基本操作-出栈
出栈时把栈顶元素取出,同时top-1,如果栈中没有元素时, 即top-1,不能进行出栈操作。
top 3 D 2C 1B 0A
print(st[top]) While top>-1:
top-1
print(st[top])
top-=1
▪ 出栈过程用算法的什么结构实现? ▪ 停止出栈的条件是什么?
栈的操作与应用
栈概念
同队列一样,栈也是一种操作受限的线性表; 仅允许在一段进行插入或删除; 允许插入或删除的一端称为栈顶,对应元素称为栈顶元素; 另外一端叫栈底,对应元素称为栈底元素。
栈的特性
先进后出,后进先出
元素入栈顺序和出栈顺序相反
有限序列性
栈中元素有限 栈可以为空,也可以包含多个元素 栈顶元素只有一个前驱点,栈底元素只有一个后继点 其他元素既有一个前驱点,又有一个后继点
栈的基本操作
阅读3.3.2栈的基本操作
用数组实现栈的过程中,需要 个指针变量? 其作用是? 与队列相比有什么区别?
栈的基本操作--建栈
栈按顺序结构存储,通过数组实现,所以Python可使用列表创建栈
例:有4个字母“A”“B”“C”“D”按序入栈,可创建长度为4的栈st:
元素初始均为空串,栈顶指针top设置为-1
代码示例:
3
top=-1
top=-1 0 1 2 3
st=[“”]*5
2
1
0
top=-1
栈的基本操作-入栈
入栈也叫压栈操作,把数据元素压入栈顶
3
3
3
3
top 3 D
2
2
2 top 2 C
2C
1
1 top 1 B
1B
1B
0
top 0 A
top=-1 空栈
0A
0A
0A
栈的基本操作-入栈
栈顶指针top记录栈顶元素的位置,初始值为-1,进 栈一个元素,top指针加1,即st[top]=栈顶元素
栈应用2:括号匹配
st=[""]*100 top=-1 flag=True s = input("请输入数学表达式:") for i in range(len(s)):
if s[i] == "(": top=top+1 st[top]=s[i]
elif s[i] == ")": if top==-1: flag=False break else: top=top-1
问题与讨论
编号为1、2、3、4的4列火车,按顺序开 进一个栈式结构的站点。问:开出火车 站的顺序有多少种?请写出所有可能的 出栈顺序
栈应用1:十进ห้องสมุดไป่ตู้数转换为二进制数
2 11 1
25
1
22
0
21
1
0
10 11
算法思想:
(1)用栈结构存放每次获得的余数 (2)根据栈特征输出每次获得的余数
31 20 11 01
相关文档
最新文档