数据结构——栈和队列解读.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文档。上传文档
查看更多
3.2.2 顺序队列与循环队列 数组定义队列:queue[max] max-1 … 1 0 规定:front指向队头元素位置 rear指向队尾元素的下一个空位 初始:front=rear=0 队空:front=rear 队满:rear=max 3.2.2 顺序队列与循环队列2 (a)空队列 (b)队列中有3个元素 (c)队列3个元素出队 (d)队满 图3-12 顺序队列各种情况 3.2.2 顺序队列与循环队列3 假溢出的问题:用循环队列来解决 下一个rear计算公式:rear=(rear+1)mod max 3.2.2 顺序队列与循环队列4 循环队列队空队满标志冲突的问题: 以牺牲一个存储空间为代价,当判断到(下一个rear==front)时,即认为队满。 实际上,max个空间只存放了(max-1)个元素 循环队列队空、队满标志: 队满:(rear+1)mod max==front 队空:front=rear 冲突解决!! 3.2.2 顺序队列与循环队列5 练习: 设循环队列容量为70(序号0~69),现经过一系列的入队和出队后,问下列情况下循环队列中各有几个元素? (1)front=14,rear=21 (2)front=23,rear=12 基于C语言的顺序队列的类型定义: 00 #define MAX 100 01 typedef struct 02 { 03 DataType elem[MAX]; /* 定义数组依次存放队列里的数据元素 */ 04 int front; /* 指向队头元素的下标 */ 05 int rear; /* 指向队尾元素的下一个空位 */ 06 }Queue; 基本操作:初始化队列 00 Queue InitQueue() 01 { 02 Queue Q; 03 Q.front=Q.rear=0; /* 队列初始化时front=rear=0 */ 04 return(Q); 05 } 基本操作:进队列 00 Queue InserQ (Queue Q, DataType x) 01 { 02 if ((Q.rear+1) % MAX== Q.front) 03 printf(“队列已满,无法进队!”); 04 else 05 { 06 Q.elem[Q.rear]=x; /* x进队列 */ 07 Q.rear = (Q.rear+1) % MAX; /* rear指向队尾下一个空位 */ 08 } 09 return(Q); 10 } 基本操作:出队列 00 Queue DeleteQ (Queue Q) /* 若栈非空,删除栈顶元素 */ 01 { 02 if (Q.rear == Q.front) 03 printf(“队列是空的,无法出队!”); 04 else 05 Q.front=(Q.front+1)% MAX; 06 return(Q); 07 } 基本操作:访问队头元素 00 DataType GetHead (Queue Q) /* 若队列非空,取队头元素赋值给x */ 01 { 02 if (Q.rear == Q.front) 03 printf(“队列是空的,无法取队头!”); 04 else 05 x=Q.elem[Q.front]; 06 return(x); 07 } 3.2.3 队列链式存储结构 1 struct node 2 { DataType data; /* 链队列结点数据域类型及名称 */ 3 struct node *next; /* 指针域类型及名称,指向下一结点 */ 4 }; 5 typedef struct node QueueNode; 6 struct node2 7 { Queu

文档评论(0)

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

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

1亿VIP精品文档

相关文档