网站大量收购闲置独家精品文档,联系QQ:2885784924

03数据结构栈与队列2.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

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

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

1亿VIP精品文档

相关文档