软件工程数据结构-栈PPT.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
栈的定义和特点 定义:限定仅在表尾进行插入或删除操作的线 性表。表尾—栈顶,表头—栈底,不含 元素的空表称空栈。 特点:先进后出(FILO)或后进先出(LIFO) 加深理解 设有编号为1,2, 3, 4的四辆列车。顺序进入一个站台,试写出这四辆列车开出车站的所有可能顺序。 队列的定义及特点 定义:队列是限定只能在表的一端进行插入,在表的另一端进行删除的线性表 队尾(rear)——允许插入的一端 队头(front)——允许删除的一端 队列特点:先进先出(FIFO) 二、顺序队列 实现:用一维数组实现sq[M-1] 存在问题 设数组大小为M,则: 当front=0,rear=M时,再有元素入队发生溢出——真溢出 当front?0,rear=M时,再有元素入队发生溢出——假溢出 解决方案 ? 队首固定,每次出队剩余元素向下移动——浪费时间,效率低 发生假溢出时再移动 循环队列 基本思想:把队列设想成环形,让sq[0]接在sq[M-1]之后,若rear==M,则令rear=0; 1、设一数列的顺序为1,2,3,4,5,6,通过队列操作可以得到( )的输出序列。 A、 3,2,5,6,4,1 B、 1,2,3,4,5,6 C、 6,5,4,3,2,1 D、 4,5,3,2,6,1 2、若进栈序列为整数1、2、3,则通过入进栈和出栈操作可能得到的整数的不同排列个数为( )。 A、3 B、4 C、5 D、6 本章结束,同学们加油! EnQueue(Q, e) 初始条件:队列Q已存在。 操作结果:插入元素e为Q的新的队尾元素。 a1 a2 an e … … DeQueue(Q, e) 初始条件:Q为非空队列。 操作结果:删除Q的队头元素,并用e返回其值。 a1 a2 an … … 3.5 队列类型的实现 链 队 列——链式映象 循环队列——顺序映象 typedef struct QNode {// 结点类型 QElemType data; struct QNode *next; } QNode, *QueuePtr; 一、链队列——链式映象 typedef struct { // 链队列类型 QueuePtr front; // 队头指针 QueuePtr rear; // 队尾指针 } LinkQueue; a1 ∧ an … Q.front Q.rear Q.front Q.rear ∧ 空队列 Status InitQueue (LinkQueue Q) { // 构造一个空队列Q Q.front = Q.rear = new QNode; if (!Q.front) exit (OVERFLOW); //存储分配失败 Q.front-next = NULL; return OK; } ^ Q.front Q.rear 插入操作 q.front … a1 an ^ q.rear 步骤:(1)生成数据域为e的新结点; (2)修改有关指针; P e ^ p=(QueuePtr)malloc(sizeof(QNode)); p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; Status EnQueue(LinkQueue Q,QElemType e) { //队列Q存在,插入元素e为Q的队尾元素 p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; return OK; } 删除操作 步骤: (1) 如果q为空队列,则返回error,否则执行(2); (2)删除队头元素;

文档评论(0)

676200 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档