- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 线性数据结构及其运算 2.1 线性表 2.2 栈和队列 2.3 数组 栈的定义 栈(stack)是限定在一端进行插入与删除的线性表 栈顶(top)是允许插入与删除的一端 栈底(bottom)是表中固定的一端,是栈顶的另一端 FILO(First In Last Out) 进栈 出栈 栈操作示例 有三个元素的进栈序列是1,2,3,举出此三个元素可能的出栈序列,并写出相应的进栈和出栈操作序列 (假设以I和O表示进栈和出栈操作)。 栈的顺序存储-顺序栈 用一维数组作为栈的存储空间S(1:m) top指针始终指向栈顶元素的当前位置 top=-1表示栈空 top=m-1表示栈满 建立顺序栈的C语言描述 #define MAXSIZE m /* m为栈中数据元素个数的最大可能值*/ int stack[MAXSIZE]; int top=-1; 进栈运算算法 退栈运算算法 读栈顶元素算法 链栈的插入运算(入栈) 申请一链栈结点,若无可用内存空间,则表示栈满,否则继续执行; 在top所指结点之前插入新结点,并将top指向新申请的结点。 链栈的删除运算(退栈) 若链栈为空,则输出栈溢出信息;否则继续执行; 删除top所指结点,并使top指向被删结点的后继结点。 队列的定义 队列(Queue)是指允许在一端进行插入,而在另一端进行删除的线性表 队尾:允许插入的一端;用尾指针rear指向队尾元素,即最后被插入的元素 队头:允许删除的一端;用头指针front指向队头元素的位置 FIFO结构的线性表 队列的顺序存储结构 入队和出队运算 循环队列 循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。 循环队列运算 队列为空:rear=front 入队:rear+1,如果rear=m,则rear=0 或rear=(rear+1)%m 出队:front+1,如果front=m,则front=0 或front=(front+1)%m 队满判定1:front=(rear+1)%m 队满判定2:front=rear?不能确定 单独设立一个标志: 循环队列运算 例1 设循环队列容量为70(序号为1~70),经过若干入队和出队后有: front=14,rear=21。 front=23,rear=12。 求这两种情况下,循环队列中各有多少个元素? 循环队列入队算法 判定循环队列是否已满,若满,则给出队列溢出出错信息; 队尾指针后移,将入队元素放入队尾指针所指的存储位置。 循环队列出队算法 判定循环队列是否为空,若空,则给出队列溢出(下溢)信息; 队头指针后移一个位置。 队列的链式存储结构 链队列的运算 链队列的入队算法 链队列的出队算法 第四次作业 P44:4,5,6 P44:10,11 * * (a)空栈 (b)元素A入栈 (c)栈满 (d)元素Y出栈 #define MAXSIZE m int stack[MAXSIZE]; int top=-1; void push(int x) {if(top==MAXSIZE-1) {printf(栈满溢出 \n); exit(1); } else {top++; stack[top]=x; } } 判断栈是否已满,若满则输出栈溢出信息,并停止执行;否则,继续执行; 栈顶指针top后移; 在栈顶指针所指当前位置插入元素x。 #define MAXSIZE m int stack[MAXSIZE]; int top;? int pop( ) {int x; if(top==-1) {printf(栈空溢出 \n); exit(1); } else {x=stack[top]; top--; } return x; } 判断栈是否为空栈,若为空则输出栈下溢信息,并停止执行;否则,继续执行; 弹出(删除)栈顶元素; 栈顶指针top下移。 #define MAXSIZE m int stack[MAXSIZE]; int top;? int pop( ) {int x; if(top==-1) {printf(栈空溢出 \n); exit(1); } else x=stack[top]; return x; } 判断栈是否为空栈,若为空则输出栈下溢信息,并停止执行;否则,继续执行; 读出栈顶元素。 栈的链式存储-链栈 链栈的C语言描述如下: struct snode{
您可能关注的文档
- crypto4c-ch12-Hash和MAC算法.ppt
- C语言课件免费下载lesson2.ppt
- day2基础算法-曹利国-noip培训.ppt
- DS00_课程介绍(冲突2011-09-06 12-05-12).ppt
- E__Temp_第01章++C语言概述.ppt
- Eclipse插件开发教程.ppt
- Eclipse的安装和使用.ppt
- eclipse杂谈.ppt
- EDA技术讲义20057109129141.ppt
- EDA技术与应用讲义_第0章_概述.ppt
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)