- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
03数据结构栈与队列2,数据结构栈和队列,数据结构栈和队列习题,数据结构队列,优先队列数据结构,环状队列数据结构,数据结构之队列,数据结构循环队列,数据结构队列的应用,ios数据结构队列
第三节 队列
一、逻辑结构
只能在一端(队尾rear)插入,在另一端(队头front)删除的线性表。
先进先出表FIFO(First In First Out)
基本操作:进/出队列
判别队列满/空
队列的应用背景:排队模型。排队问题无处不在,各种服务行业、甚至生产管理中都存在排队问题。
二、链式存储结构
Typedef struct queuenode //队列中的结点类型
{ ElemType data;
struct Node *link;
}QueueNode;
typedef struct //队列类型
{ QueueNode *front,*rear; }LinkQueue; LinkQueue Q;
初始化空队列: Q.front==NULL Q.rear==NULL
1、入队列
Status LinkQueue_Enter(LinkQueue Q, ElemType e)
{ QueueNode *p;
p=(QueueNode *)malloc(sizeof(QueueNode));
if(!p) return(OVERFLOW);
p-data=e; p-link=NULL;
if(Q.front==NULL) Q.front=Q.rear=p;
else { Q.rear-link=p; Q.rear=p; }
return(OK);
}
2、出队列
Status LinkQueue_Leave(LinkQueue Q,ElemType e)
{ QueueNode *p;
if(Q.front==NULL) return(UNDERFLOW);
p=Q.front; Q.front=p-link;
if(Q.rear==p) Q.rear=NULL;
e=p-data; free(p);
return(OK);
}
3、销毁队列
void LinkQueue_Destroy(LinkQueue Q)
{ QueueNode *p;
while(Q.front)
{ p=Q.front;
Q.front=p-link;
free(p);
}
Q.rear=NULL;
}
三、顺序存储结构
动态顺序存储结构:
#define QUEUE_SIZE 100 //初始化时分配的空间
typedef struct
{ ElemType *base; //存储空间的起始地址
int front,rear;
} SqQueue; SqQueue Q; //定义一个队列结构
rear为下一个进队列元素的位置。
front在队列不空时,指向首元素;
在队列为空时,等于rear。
1、初始化队列
Status SqQueue_Init(SqQueue Q)
{ Q.base=malloc(QUEUE_SIZE*sizeof(ElemType));
if(!Q.base) return(OVERFLOW);
Q.front=Q.rear=0;
return(OK);
}
队列空: Q.front==Q.rear
进队列:*(Q.base+Q.rear)=e; Q.rear++;
出队列:e=*(Q.base+Q.front); Q.front++;
队列满: Q.rear==QUEUE_SIZE
=》假溢出
进队列:Q.rear =(Q.rear +1) % QUEUE_SIZE
出队列:Q.front=(Q.front+1) % QUEUE_SIZE
队列空:Q.front==Q.rear
当队列中有QUEUE_SIZE个元素时:
Q.front==Q.rear
=》必须浪费一个结点空间
队列满:(Q.rear +1) % QUEUE_SIZE == Q.front
2、入队列
Status SqQueue_Enter(SqQueue Q,ElemType e)
{ if((Q.rear +1) % QUEUE_SIZE==Q.front) return(OVERFLOW);
*(Q.base+Q.rear)=e;
Q.rear=(Q.rear +1) % QUEUE_SIZE;
return(OK);
}
3、出队列
Status SqQueue_Leave(SqQueue Q,ElemType e)
{ if(Q.rear==Q.front) return(UNDERFLOW);
e=*(Q.ba
您可能关注的文档
- 对农村职校汽车车身修复专业建设的思考.doc
- !!敏感性分析.xls
- ( 数学建模)排队论模型.ppt
- (2009.09.25)数学建模09秋学习辅导(文本).doc
- (人教版)课后强化Unit 1 Great Scientists(必修五,含精细解析).doc
- (DISC性格分析).doc
- (全国通用)2014届高考英语一轮复习 课时作业(二十二)Module 4 Great Scientists 外研版必修4.doc
- (四川专用)2014届高考英语一轮复习 课时作业(十一) Module 5 Newspapers and Magazines 新人教版必修2.doc
- (2015中考精英)2015中考英语人教版复习课件中考题型8 短文填词.ppt
- (英语)执信中学2012届高三上学期10月月考.doc
- 某县纪委监委开展“校园餐”突出问题专项整治工作汇报22.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告66.docx
- 某县委常委、宣传部部长年度民主生活会“四个带头”个人对照检查发言材料.docx
- XX县委领导班子年度述职述廉报告3.docx
- 某县纪委关于校园餐问题整治工作落实情况的报告.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告22.docx
- 某县税务局党委领导班子年度民主生活会“四个带头”对照检查材料.docx
- 某县委书记在县委常委班子年度民主生活会专题学习会上的讲话.docx
- 某县纪委校园餐问题整治工作落实情况的报告.docx
- 某区委副书记、区长年度民主生活会对照检查材料.docx
文档评论(0)