高中信息技术浙教版(2019)选修1:3.3.2 栈的应用-课后练习.docx

高中信息技术浙教版(2019)选修1:3.3.2 栈的应用-课后练习.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

作业练习

课程基本信息

学科

高中信息技术

年级

高二

学期

(秋季)

课题

栈的应用(第十课时)

教科书

书名:《数据与数据结构》教材

出版社:浙江教育出版社

学生信息

姓名

学校

班级

学号

作业练习

1.汉诺塔游戏的操作过程中,将圆盘从大到小依次移入某根柱子上,而后又从上面的圆盘开始依次将圆盘从柱子上移走,这个移入和移出的过程与下列数据结构操作类似的是()

A.数组 B.字符串 C.队列 D.栈

2.为便于计算表达式的值,波兰数学家提出了将运算符置于运算对象之后的表示方法,不用考虑运算符的优先性。

如下Python程序段实现了对逆波兰式的计算(假定逆波兰式中的运算对象均为一位数的正整数,且运算只有加减乘除),当输入“682-2*3/+”时,输出“10”。请补全划线处代码。

st=[0]*100;top=-1

s=input(请输入逆波兰式:)

i=0

whileilen(s):

if0=s[i]=9:#数字字符

top+=1

st[top]=①

else:

x=st[top];top-=1

y=st[top];top-=1

ifs[i]==+:#加法运算

top+=1;st[top]=x+y

elifs[i]==-:#减法运算

top+=1;②

elifs[i]==*:#乘法运算

top+=1;st[top]=x*y

else:#除法运算

top+=1;st[top]=int(y/x)

i=i+1

print(③)#输出最后的运算结果

【答案】①ord(s[i])-48或者ord(s[i])-ord(0)或者int(s[i])②st[top]=y-x③st[top]

3.在利用栈来判断一个仅含有小括号的表达式中的括号是否匹配的过程中,当遇到表达式中的一个左括号时,就让其进栈,遇到一个右括号时,就对栈进行一次出栈操作;当栈最后为空,表示括号是配对的,否则是不配对的。现有表达式“(a+b)×c+((d-e)×f+g)×h”,针对该表达式设计栈的大小至少为()

A.1B.2C.3D.4

4.当栈为空时,栈顶top=-1,利用栈计算逆波兰式“682-2*3/+”,当即将计算“8-2”时,top的值为()

A.0B.1C.2D.3

5.判断回文字符串的问题可以通过多种方法来解决。如下Python程序段利用栈来解决回文字符串的问题,请补

全划线处的代码。

st=[]*100;top=-1

s=input(请输入字符串:)

k=len(s)//2

foriinrange(k):

top+=1;st[top]=s[i]

if①:

k=k+1

foriinrange(k,len(s)):

c=st[top];top-=1

if③:

flag=False;break;

ifflag:

print(字符串:,s,是回文字符串)

else:

print(字符串:,s,不是回文字符串)

答案:

1.D

2.①ord(s[i])-48或者ord(s[i])-ord(0)或者int(s[i])②st[top]=y-x③st[top]

3.B

4.D

5.①len(s)%2==1②flag==True③c!=s[i]

您可能关注的文档

文档评论(0)

K12教育资源 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年02月03日上传了教师资格证

1亿VIP精品文档

相关文档