




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.3栈栈:一种操作受限的线性表,仅允许在表的一端进行插入或删除。进行插入或删除操作的一端称为栈顶,位于栈顶位置的元素称为栈顶元素;相应地,将表的另一端称为栈底,位于栈底位置的元素为栈底元素。栈的特性1.先进后出、后进先出赵六王五李四张三栈顶栈底最后入栈的“赵六”最先出栈,最先入栈的“张三”最后出栈2.有限序列性栈可以是空的,也可以包含多个元素。栈中元素呈现线性关系,栈顶元素有一个前驱点,栈底元素有一个后继点,其他元素既有一个前驱点,又有一个后继点。栈与队列有什么相同点和不同点?相同点:都是一种操作受限的线性表,都具有有限序列性的特点。不同点:队列中的元素具有先进先出、后进后出的特点,栈中的元素则具有先进后出、后进先出的特点。栈的基本操作栈,一般按顺序结构存储,可以用数组实现。由于栈顶元素在数组中的位置会发生改变,因此使用top变量来记录栈顶元素在数组中的位置。如下图所示,①图为栈结构,②图为用数组st存储该栈。CBA栈顶:top=2栈底:ABC数组st012top栈的存储①②栈的常用操作有建栈、入栈、出栈等。1.建栈在Python中,当要存储n个元素的栈时,可以用列表创建一个长度为n的栈。例如,要使4个字母“A”“B”“C”“D”按序入栈、出栈,可以建一个长度为4的栈st,元素初始值均为空串。为了操作方便,把指向栈顶元素的指针变量top值设置为-1。Python代码实现如下:top=-1st=[“”]*42.入栈、出栈入栈又叫压栈操作,把数据元素压入栈顶。每次入栈时,栈顶指针变量top值加1,再给st[top]赋值。字母“A”“B”“C”“D”按序入栈的过程如下图所示。0123空栈top=-1ABACBADCBAtop0123top1023top2013top3012满栈④②③①⑤st栈的入栈过程Python代码实现如下:top=top+1#top=0st[top]=“A”#字母A入栈top=top+1#top=1st[top]=“B”#字母B入栈top=top+1#top=2st[top]=“C”#字母C入栈top=top+1#top=3st[top]=“D”#字母D入栈出栈时把栈顶元素取出,同时top值减1。如果栈中没有元素时,即top=-1,不能进行出栈操作。Python代码实现如下:whiletop>-1:print(st[top])top-=1编号为1、2、3、4的4列火车,按顺序开进一个栈式结构的站点。问:开出火车站的顺序有多少种?请写出所有可能的出栈序列。进入栈中的元素可停留、可出栈(1)出栈序列以火车“①”开头为例,只能是“①”进“①”出,剩下“②③④”,则有:出入栈方式出栈序列②进②出,③进③出,④进④出①②③④②进②出,③进,④进④出,③出①②④③②进,③进③出,②出,④进④出①③②④②进,③进③出,④进④出,②出①③④②②进,③进,④进④出,③出,②出①④③②出栈序列以火车“②”开头为例,只能是“①”进,“②”进,“②”出,剩下“③④”入栈,则有:出入栈方式出栈序列①出,③进③出,④进④出②①③④①出,③进,④进④出,③出②①④③③进③出,①出,④进④出②③①④③进③出,④进④出,①出②③④①③进,④进④出,③出,①出②④③①出栈序列以火车“③”开头为例,只能是“①”进,“②”进,“③”进,“③”出,剩下“④”,则有:出入栈方式出栈序列②出,①出,④进④出③②①④②出,④进④出,①出③②④①④进④出,②出,①出③④②①出栈序列以火车“④”开头为例,只能是“①”进,“②”进,“③”进,“④”进,“④”进,“④”出,则有:④③②①。栈的应用实例将一个十进制数转换为二进制数,根据入栈、出栈的步骤,采用Python编写的完整程序及测试结果如下所示:st=[-1]*100#列表中元素初始值为-1top=-1number=int(input(“请输入十进制整数:”))whilenumber>0:x=number%2top=top+1st[top]=x#入栈number=number//2whiletop>=0:print(st[top],end=“”)#出栈top=top-1请输入十进制整数:13输出:1101拓展链接用列表自带的函数和方法实现的栈Python中用列表自带的函数和方法可以实现建栈、入栈、出栈、栈中元素个数的统计等操作。例如:stacklist=[]#建立一个空栈liststacklist.append(“A”)#字母A入栈stacklist.append(“B”)#字母B入栈print(stacklist[1])#输出栈顶元素,为字母Bprint(len(stacklist))#输出栈中元素的个数,为2stacklist.pop()#弹出栈顶元素print(len(stacklist))#输出栈中元素的个数,为1,是字母A练一练1.有如下Python程序段:a=[0]*5b=[“A”,”B”,”C”,”D”,”E”]top=-1whiletop<4:top=top+1iftop%2==0:a[top]=b[top]else:a[top]=topforiinrange(2):a.pop()top=top-1print(a,top)程序运行结束后,输出的内容是:A.[“A”,”B”,”C”]3B.[“A”,”B”,”C”]2C.[“A”,1,”C”]3D.[“A”,1,”C”]2D2.给定一个字符串,删除相邻重复项。例如,字符串“accdbbdca”删除相邻重复项的结果为“aca”。实现上述功能的python程序如下:S=input(“请输入一个字符串:”)stack=[]#定义一个栈foriinS:if______①________:#如果当前栈为空stack.append(i)elifi==stack[-1]:#如果当前元素与栈顶元素相等_______②________#删除else:_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2011年山东事业单位考试公共基础知识真题及答案解析【哒哒】
- 软件测试行业的职业素养与道德核心及试题及答案
- 影视行业工业化制作流程优化与2025年质量控制创新实践报告
- 中药提取与分离技术2025年中药提取与分离技术市场前景研究报告
- 数字化浪潮中的公路货运行业:2025年效率提升与智能仓储技术应用
- 无人机培训机构运营管理方案
- 石油公司运营管理方案
- 公路运输公司运营管理方案
- 房地产公司运营管理方案
- 碳排放练习试卷附答案
- 2024年中考复习 沪教版六年级地理上册知识点
- GB/T 5506.2-2024小麦和小麦粉面筋含量第2部分:仪器法测定湿面筋和面筋指数
- 文化产业与文化资本增值-洞察分析
- 高考背诵补充篇目【知识精研】《报任安书》课件
- 项目安全管理指导手册
- 撤销裁判文书上网申请书范文
- 教学设计-2024年秋季学期终结性考核-国开(SC)-参考资料
- 七下道法(易错选择题50道)
- 底线思维课件教学课件
- DB11 097-2014 低硫煤及制品
- 2024-2025学年人教版小升初英语试卷及解答参考
评论
0/150
提交评论