- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构(05中文)教案第3章队列相关附件6990-1ppt课件
第三章 栈与队列;3.4队列 ( Queue );队列的抽象数据类型;队列的表示和实现;顺序队列的实现;队列的进队和出队 ;循环队列及其实现;循环队列的进队和出队;存储队列的数组被当作首尾相接的表处理。
队头、队尾指针加1时从maxSize -1直接进到0,可用语言的取模(余数)运算实现。
队头指针进1: front = (front + 1) % maxSize;
队尾指针进1: rear = (rear + 1) % maxSize;
队列初始化:front = rear = 0;
队空条件:front == rear;
队满条件:(rear + 1) % maxSize == front
front = rear可能表示队空,也可能表示队满
应另设标志以便区别队空状态
或少用一个位置
;循环队列及其实现;循环队列及其实现;第三种方法:使用一个计数器记录队列中元素的总数(实际上是队列长度)。下面是实现循环队列上的六种基本操作,为此先给出循环队列的类型定义。
#define QueueSize 100
typedef char DataType;
typedef Struct{
int front;
int rear;
int count;
datatype data[queuesize]
}cirqueue;;(1)置空队
void initqueue(cirqueue *q){
q–front=q–rear=0;
q–count=0;
}
(2)判断队空
int queueempty(cirqueue *q) {
return q–count==0;
}
(3)判断队满
int queuefull(cirqueue *q){
return q–count==queuesize;
};(4)入队
void enqueue(cirqueue *q, datatype x)
{
if(queuefull(q))
error(“queue overflow”);
q–count++;
q–data[q–rear]=x;
q–rear=(q–rear+1)%queuesize;
}
;(5)出队
datatype dequeue(cirqueue *q)
{
datatype temp;
if(queueempty(q))
error(“queue underflow”);
temp=q–data[q–front];
q–count--;
q–front=(q–front+1)%queuesize;
return temp;
}
;(6)取队首元素
datatype queuefront(cirqueue *q)
{
if(queueempty(q))
error(“queue is empty.”);
return q–data[q–front];
};1、循环队列的优点是什么?如何判断它的空和满?
2、设长度为n的链队列用单循环链表表示,若只设头指针,则怎样进行入队和出队操作;若只设尾指针呢?
3、用第一种、第二种方法,即设状态标示、少用一个元素空间的方法来区别循环队列的队空和队满,试设计置空队、判队空、判队满、出队、入队及取队头元素等六个基本操作。
4、如果头指针、尾指针、队列长度中只能选两个来实现队列,你使用哪两个?;
假设循环队列只设rear和quelen来分别指示队尾元素的位置和队中元素的个数,试给出判断此循环队列的队满条件,并写出相应的入队算法。 作业
出队算法?要求出队时需返回队头指针。
;队列的链接表示 — 链式队列;3.4.3 链队列
和顺序队列类似,我们也是将这两个指针封装在一起,将链队列的类型LinkQueue定义为一个结构类型:
typedef struct queuenode{
datatype data;
struct queuenode *next;
文档评论(0)