[工学]第3章 栈和队列.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第3章 栈和队列

本章主要内容: 堆栈 堆栈的应用 队列 队列的应用 本章重点: 堆栈和队列的基本运算及其应用。 本章难点:灵活使用堆栈和队列解决实际问题。 3.1 堆栈 二、堆栈的图示 三、堆栈的基本操作(1) 3.1.2 堆栈的顺序表示与实现 栈的应用---基本应用(1) void read_write() { Seqstack *S; int n,*x; cout”Please input num int n”; cinn; //输入元素个数 StackInitiate(S); //初始化栈 for (i=1; i=n; i++) { cin*x; //读入一个数 StackPush (S,*x); //入栈 } while (stackNotEmpty(S) ==1) {stackpop(S,x); //退栈取出栈顶元素 cout*x; //输出 } } 3.2 堆栈的应用举例 栈的应用---数的进制转换 设计算法将十进制数转换为八进制形式。 //遇到),] 或},弹出堆栈顶字符 case ): StackPop(S,e); if (e!=() tag=0; break; // 若堆栈顶不是对应的(,[或{,则置tag为0; ………………………… } // end of switch ch++; // 继续判断下一个字符 e=\0; // 将e清空,以便存放下一次出堆栈的字符 } // end of while // 如果堆栈为空且tag为1,则配对成功 if ((tag==1)(S-top==0)) printf(match!\n); else printf (not match!\n); } 3.4 队 列 3.4.2 队列的顺序表示和实现 一、 队列的顺序存贮结构 队列的顺序存储结构是用一组地址连续的存储单元依次存放队列中的各个元素,并用指针front指向队头,指针rear指向队尾 。 顺序队列常常会出现“假溢出”现象,如图所示。虽然队列中还有一定的存储空间,但因为front指针与rear指针均向同一个方向移动,导致该队列不能再进行入队操作。 为了避免“假溢出”,可以这样规定,一旦 rear指针(或 front指针)指向了存储空间的末尾位置,如果此时再进行入队(或出队)操作,则将相应的指针平移到数组的起始位置,即是将队列假想为一个循环的环状空间,我们称之为循环队列。 三、循环队列操作图示 三、循环队列操作图示 三、循环队列操作图示 三、循环队列操作图示 三、循环队列操作图示 三、循环队列操作图示 三、循环队列操作图示 四、循环队列基本操作的实现 例:编写判断一个字符序列是否是回文的函数。  编程思想:    设字符数组str中存放了要判断的字符串。把字符数组中的字符逐个分别存入队列和堆栈,然后逐个出队列和退栈并比较出队列的字符和退栈的字符是否相等,若全部相等则该字符序列是回文,否则就不是回文。 设计函数如下: 3.4 优先级队列 1、优先级队列  带有优先级的队列。 2、顺序优先级队列 用顺序存储结构存储的优先级队列。 3、优先级队列和一般队列的主要区别   优先级队列的出队列操作不是把队头元素出队列,而是把队列中优先级最高的元素出队列。 它的数据元素定义为如下结构体: struct DataType { ElemType elem; //数据元素 int priority; //优先级 }; 注:顺序优先级队列除出队列操作外的其他操作的实现方法与前边讨论的顺序队列操作的实现方法相同。 本章小结 习 题 三 C rear front D MaxQueueSize = 4 此刻rear已经指向存储空间的末端 若再有元素进队列,则执行语句: rear=(rear+1)% MaxQueueSize rear front C D元素进队列,执行: rear=(rear+1)% MaxQueueSize 经过计算,rear的值为0 front rear 空队 front == rear 是队空标志 C C rear front rear front D E 3 1 2 0 Ma

文档评论(0)

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

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

1亿VIP精品文档

相关文档