- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构辅导 栈与队列 1
数据结构辅导 栈和队列 1
一、栈
1.栈的定义
栈(Stack)又称堆栈,它是一种运算受限的线性表,其限制是仅答应在表的一端进行插入和删除运算。人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底。向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元素。
在日常生活中,有许多类似栈的例子,如刷洗盘子时,依次把每个洗净的盘子放到洗好的盘子上,相当于进栈;取用盘子时,从一摞盘子上一个接一个地向下拿,相当于出栈。又如向枪支弹夹里装子弹时,子弹被一个接一个地压入,则为进栈;射击时子弹总是从顶部一个接一个地被射出,此为子弹出栈。
由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈称为后进先出表(Last In First Out,简称LIFO)。
例如,假定一个栈S为(a,b,c),其中字符c的一端为栈顶,字符c为栈顶元素。若向S压入一个元素d,则S变为(a,b,c,d),此时字符d为栈顶元素;若接着从栈S中依次删除两个元素,则首先删除的是元素d,接着删除的使元素c,栈S变为(a,b),栈顶元素为b。
视频教程css.shtmltarget=_blanktitle=div视频教程div 2.栈的存储结构
栈既然是一种线性表,所以线性表的顺序存储和链接存储结构同样适用于栈。
(1)栈的顺序存储结构
栈的顺序存储结构同样需要使用一个数组和一个整型变量来实现,利用数组来顺序存储栈中的所有元素,利用整型变量来存储栈顶元素的下标位置。假定栈数组用stack[StackMaxSize]表示,指示栈顶位置的整型变量用top表示,则元素类型为ElemType的栈的顺序存储类型可定义为:
ElemType stack[StackMaxSize];
int top;
其中,StackMaxSize为一个整型全局常量,需事先通过const语句定义,由它确定顺序栈(即顺序存储的栈)的最大深度,又称为长度,即栈最多能够存储的元素个数;由于top用来指示栈顶元素的位置,所以把它称为栈顶指针。
栈的顺序存储结构同样可以定义在一个记录类型中,假定该记录类型用Stack表示,则定义为:
struct Stack{
ElemType stack[StackMaxSize];
int top;
};
在顺序存储的栈中,top的值为-1表示栈空,每次向栈中压入一个元素时,首先使top增1,用以指示新的栈顶位置,然后再把元素赋值到这个位置上,每次从栈中弹出一个元素时,首先取出栈顶元素,然后使top减1,指示前一个元素成为新的栈顶元素。由此可知,对顺序栈的插入和删除运算相当于是在顺序表(即顺序存储的线性表)的表尾进行的,其时间复杂度为O(1)。
设一个栈S为(a,b,c,d,e),对应的顺序存储结构如图4-1(a)所示。若向S中插入一个元素f,则对应如图4-1(b)所示。若接着执行两次出栈操作后,则栈S对应如图4-1(c)所示。若依次使栈S中的所有元素出栈,则s变为空,如图4-1(d)所示。在图4-1中栈是垂直画出的,并且使下标编号向上递增,这样可以形象地表示出栈顶在上,栈底在下。
图4-1栈的顺序存储结构及操作过程
在一个顺序栈中,若top已经指向了StackMaxSize-1的位置,则表示栈满,若top的值已经等于-1,则表示栈空。向一个满栈插入元素和从一个空栈删除元素都是不答应的,应该停止程序运行或进行非凡处理。
(2)栈的链接存储结构
栈的链接存储结构与线性表的链接存储结构相同,是通过由结点构成的单链表实现的,此时表头指针被称为栈顶指针,由栈顶指针指向的表头结点被称为栈顶结点,整个单链表被称为链栈,即链接存储的栈。当向一个链栈插入元素时,是把该元素插入到栈顶,即使该元素结点的指针域指向原来的栈顶结点,而栈顶指针则修改为指向该元素结点,使该结点成为新的栈顶结点。当从一个链栈中删除元素时,是把栈顶元素结点删除掉,即取出栈顶元素后,使栈顶指针指向原栈顶结点的后继结点。由此可知,对链栈的插入和删除操作是在单链表的表头进行的,其时间复杂度为O(1)。
设一个栈为(a,b,c),当采用链接存储时,对应的存储结构示意图如图4-2(a)所示,其中HS表示栈顶指针,其值为存储元素c结点的地址。当向这个栈插入一个元素d后,对应如图4-2(b)所示。当从这个栈依次删除两个元素后,对应如图4-2(c)所示。当链栈中的所有元素全部出栈后,栈顶指针HS的值为空,即常量NULL所表示的数值0。
图4-2栈的链接存储结构及操作过程
3.栈的抽象数据类型
栈的抽象数据类型中的数据部分为具有ElemType元素类型的一个栈,它可以采用
您可能关注的文档
- 抓住机遇 迎接挑战 顺势而为统筹做好新形势下利用外资与境外投资工作.doc
- 把文件隐藏在图片里使用说明及其源程序与代码.doc
- 抓市场促营销树品牌推动工业经济实现价值型增长 - 山东省经济与信息 ....ppt
- 投标有效性评审包括技术性评审与一般性审查,首先进行技术性评审....doc
- 投资体制改革与审批流程.ppt
- 投保规则=安享B与健康人生.ppt
- 技能型教材编写要求与技巧 - PowerPoint Presentation.ppt
- 投资收益项目鉴证程序与方法.ppt
- 投资者法律保护公司治理与关联交易关系探索——基于大陆香港与美国市场.doc
- 抗微生物类与循环系统类部分补充剂型规格药品最高零售....doc
最近下载
- ICU火灾应急预案演练脚本.doc VIP
- 新部编人教版小学语文二年级下册快乐读书吧《神笔马良》整本书阅读指导课教学课件.pptx
- 中职类科研课题申报书:中职数学教学融合专业课知识研究.docx VIP
- 网络语言及其对青少年的影响.docx VIP
- 垃圾渗滤液项目设备安装施工方案.doc
- 超声引导下颈内静脉穿刺术.ppt
- 2025年人教版高中地理必修第二册第三章产业区位因素第三节服务业区位因素及其变化.pptx VIP
- 2024年苏州工业职业技术学院单招职业技能测试题库及答案(名校卷).docx VIP
- 养成学习好习惯(教案).doc
- INOVANCE汇川-SV600P系列伺服调试手册-中文.pdf
文档评论(0)