数据结构第二篇答案.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#define MAXQSIZE 100 //最大队列长度 typedef struct { ElemType *base; // 动态分配存储空间 int front; // 头指针,若队列不空, // 指向队列头元素 int rear; // 尾指针,若队列不空,指向 // 队列尾元素的后一个位置 } SqQueue; 循环队列的类型定义 // 构造一个空队列Q Q.base = (ElemType *) malloc (MAXQSIZE *sizeof (ElemType)); if (!Q.base) exit (OVERFLOW); // 存储分配失败 Q.front = Q.rear = 0; return OK; } Status InitQueue (SqQueue Q) { { // 插入元素e为Q的新的队尾元素 if ((Q.rear+1) % MAXQSIZE == Q.front) return ERROR; //队列满 Q.base[Q.rear] = e; Q.rear = (Q.rear+1) % MAXQSIZE; return OK; } Status EnQueue (SqQueue Q, ElemType e) { // 若队列不空,则删除Q的队头元素, // 用e返回其值,并返回OK; 否则返回ERROR if (Q.front == Q.rear) return ERROR; e = Q.base[Q.front]; Q.front = (Q.front+1) % MAXQSIZE; return OK; } Status DeQueue (SqQueue Q, ElemType e) 其它形式的队列: a1 a2 a3 ai an front rear … … a1 a2 a3 ai an front rear … … a1 a2 a3 ai an front rear … … 输入受限的双端队列 输出受限的双端队列 双端队列 本章小结 1.栈的操作有后进先出(LIFO)的操作特点。 2.递归和栈之间存在着很强的联系。递归算法的实现通常是通过设立一个“递归工作栈”来完成的。借助栈也可以将一个递归算法改写为非递归算法。 栈 1.队列操作的定义赋予了队列先进先出(FIFO)的操作特点。 2.队列的插入和删除操作需要高效率地访问队列的两端。因此,链队列用一个带有头指针和尾指针的线性链表或用一个循环链表来实现。 3.队列的顺序存储容易向右漂移。这会使队列出现假溢出现象。一种高效率的解决方案是使用循环数组(称循环队列)。 4.如果用循环数组来实现队列,必须能够区分队列满和队列空的情况。通过计队列中元素的个数、使用一个isfull标志、或者留出一个空的数组单元可以区分。 队列 1. 掌握栈和队列类型的特点,并能在相应的应用问题中正确选用它们。  2. 熟练掌握栈类型的两种实现方法,特别应注意栈满和栈空的条件以及它们的描述方法。  3. 熟练掌握循环队列和链队列的基本操作实现算法,特别注意队满和队空的描述方法。 4. 理解递归算法执行过程中须用栈来实现。 本章学习要点 作业 栈 : (P.22) 3.4 3.15 作业 队列: (P.23) 3.12 3.13 3.28 * * 1)若为“”,则将当前运算符压入运算符栈,并依次读 下一个元素。 2)若为“==”,则 A) 若均为“#”,则求值结束; B) 运算符栈栈顶为“(”,当前运算符是“)”,则 从运算符栈退出“(”,依次读下一个元素; 3)若为“”,则从操作数栈连续退出两个操作数,从运 算符栈中退出一个运算符,然后作相应的运算,并 将运算结果压入操作数栈。此时读出的运算符下次 重新考虑(即不读入下一个元素)。 运算符栈栈顶运算符的优先权?当前运算符的优先权 (运算符间的优先关系请看教材P.53) 3.1.2 栈类型的实现 顺序栈 链栈 #define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef struct { ElemTyp

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档