- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
3.3栈概念特征操作应用
情景创设汉诺塔游戏,玩法如下:
1.有三根杆子A,B,C。A杆上有若干碟子
2.每次移动一块碟子,小的只能叠在大的上面
3.把所有碟子从A杆全部移到C杆上完成游戏,分析各个环移动的特征
栈概念是一种“先进后出”的线性表,仅允许在一端进行插入和删除允许插入或删除的一端称为栈顶,对应元素称为栈顶元素另一端叫栈底,对应元素称为栈顶元素
栈特征(1)先进后出,后进先出元素入栈顺序和元素出栈顺序相反(2)有限序列性:栈元素个数有限栈可以为空,也可以包含多个元素,栈顶元素只有一个前驱点,栈底元素只有一个后继点,其他元素既有一个前驱点,又有一个后继点。
栈操作(建栈)例:有5个字母“a”“b”“c”“d”“e”按序入栈,可创建长度为5的栈st:初始为空串,栈顶指针top设置为-1代码示例:top=-1st=[“”]*5栈按顺序结构存储,通过数组实现,所以Python可使用列表创建栈
栈操作(入栈)栈顶指针top记录栈顶元素的位置,初始值为-1,进栈一个元素,top指针加1,st[top]=栈顶元素top=-1#初始值top=top+1#top=0st[top]=”a”#a入栈,top指向a的位置top=top+1#top=1st[top]=”b”#b入栈,top指向b的位置……
top=-1#初始值top=top+1 #top=0st[top]=”a”#a入栈,top指向a的位置top=top+1 #top=1st[top]=”b”#b入栈,top指向b的位置top=top+1 #top=2st[top]=”c”#c入栈,top指向c的位置top=top+1 #top=3st[top]=”d”#d入栈,top指向d的位置top=top+1 #top=4st[top]=”e”#e入栈,top指向e的位置栈操作(入栈)
栈操作(入栈)入栈过程用算法的什么结构实现?停止入栈的条件是什么?st=[“”]*5top=-1whiletoplen(st):top+=1st[top]=“*”
栈操作(出栈)出栈,排在栈顶的元素依次出栈,top指针变量依次减1,直至top的值等于-11.print(st[top])2.st[top]=“”3.top=top-1
栈操作(出栈)top=4#初始值st[top]=””#e出栈top=top-1 #top=3,top指向d的位置st[top]=””#d出栈top=top-1 #top=2,top指向c的位置st[top]=””#c出栈top=top-1 #top=1,top指向b的位置st[top]=””#b出栈top=top-1 #top=0,top指向a的位置st[top]=””#a出栈top=top-1 #top=-1,栈空
栈操作(出栈)出栈过程用算法的什么结构实现?停止出栈的条件是什么?top=len(st)-1whiletop!=-1:print(st[top])st[top]=“”top-=1
问题与讨论编号为1、2、3、4的4列火车,按顺序开进一个栈式结构的站点。问:开出火车站的顺序由多少种?请写出所有可能的出栈序列。
以1开头,只能1进1出,剩下2、3、4
以2开头,只能1进2进2出,剩下3、4
以3开头,只能1进2进3进3出,剩下4以4开头,只能1进2进3进3进4进4出,则出栈序列为:4、3、2、1
算法思想:用栈结构存放每次获得的余数根据栈特征输出每次获得的余数栈应用1:十进制数转换为二进制数st=[0]*100top=-1num=int(input(“输入十进制数”))whilenum!=0:top+=1st[top]=num%2num=num//2whiletop!=-1:print(st[top],end=“”)st[top]=“”top-=
您可能关注的文档
- 员工年终考核鉴定表.docx
- 员工实习考核鉴定表.docx
- 员工试用鉴定表.docx
- 员工试用期鉴定表.docx
- 员工试用期自我评价表.docx
- 员工异动移交表.docx
- 员工转正考核评议表.docx
- 员工转正评估表.docx
- 员工转正自我测试表.docx
- 员工自我鉴定表.doc.docx
- 2025云南宁洱县医疗卫生事业单位第二轮急需紧缺人才招聘3人笔试模拟试题及答案解析.docx
- 2025年福建省泉州海关综合技术服务中心招聘编外员工笔试模拟试题及答案解析.docx
- 2025榆林农业投资集团有限公司招聘(21人)笔试备考试题及答案解析.docx
- 2025年湖南省铁路规划设计研究院有限公司公开招聘9人笔试模拟试题及答案解析.docx
- 2025年甘肃省酒泉市市直事业单位选调23人笔试模拟试题及答案解析.docx
- 2025年恒丰银行长沙分行社会招聘9人笔试模拟试题及答案解析.docx
- 2025年江西省林业科学院高层次人才招聘5人笔试模拟试题及答案解析.docx
- 2025年甘肃酒泉肃北县招聘司法协理员笔试模拟试题及答案解析.docx
- 2025年江西省南昌大学第一附属医院医疗救助与健康促进基金会办公室财务综合岗招聘1人笔试模拟试题及答案解析.docx
- 2025年福建省厦门鼓浪湾大酒店有限公司招聘7人笔试模拟试题及答案解析.docx
文档评论(0)