- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
清华大学 黄维通 设计制作 第13章 队列及其应用 清华大学 黄维通 设计制作 * 第13章 队列及其应用 本章主要内容 队列的定义及基本操作 队列的实现 队列的应用 队列是删除操作只在表头(称为队头)进行,插入操作只在表尾(称为队尾)进行的特殊线性表(First In First Out) 13.1 队列的定义及基本操作 队列作为一种抽象数据类型,其基本操作如下: lFront(Q, e):返回队列Q的队头元素,但不删除该元素 lEnqueue(Q, e):将元素e插入队列Q的队尾,此操作也常简称为“入队” lDequeue(Q, e):返回队列Q的队头元素,并删除该元素,简称为“出队” lEmpty(Q):判断队列是否为空 lClearQueue(Q):清空队列中的所有元素 队列是一种特殊的表,因此凡是可以用来实现表的数据结构都可以用来实现队列,实际上,队列也是一种特殊的线性表。不过,队列中的元素的个数通常不固定,因此常用循环数组和线性表两种方法实现队列 13.2 队列的实现 循环队列-队列的顺序表示和实现 链队列的缺点: 空队列 J1、J2、J3 相继入列 J1、J2 被删除 数据无法继续存进去,但是栈并没有满,如何解决呢? J4,J5,J6相继插入之后,J4被删除 初始化队列时,令rear=front=0; Q.front Q.rear Q.rear Q.rear Q.rear Q.front Q.front Q.front J1 J2 J3 J3 J5 J6 13.2.1用循环数组实现队列 队列“满”的情况 队列“空”的情况 这样,队列的类型QueueType说明为: #define MAXLENGTH 32 #define TYPE int #define NEXT(x) ((x+1)%MAXLENGTH) struct TQueue { int front; int rear; int size; TYPE element[MAXLENGTH]; }; typedef struct TQueue Queue; (1)清空队列中的所有元素的操作 void ClearQueue(Queue * q) //清空队列中的所有元素 { q-rear = MAXLENGTH-1; q-front = 0; q-size = 0; } (2)返回队列Q的队头元素,但不删除该元素的操作 void Front(Queue q, TYPE * e) //返回队头元素,但不删除该元素 { if(Empty(q)) e = NULL; else *e = q.element[q.front]; } (3)将元素e插入队列Q的队尾的操作 void Enqueue(Queue *q, TYPE e) //将元素e插入队列Q的队尾 { if(q-size == MAXLENGTH) return; else { q-rear = NEXT(q-rear); q-element[q-rear] = e; q-size ++; } } (4)返回队列Q的队头元素,并删除该元素的操作 void Dequeue(Queue * q, TYPE * e) { if(Empty(*q)) e = NULL; else { *e = q-element[q-front]; q-front = NEXT(q-front); q-size --; } } (5)判断队列是否为空的操作 int Empty(Queue q) { return(q-front==q-rear); } 用线性表实现队列时,单元类型及队列类型可说明如下: #define TYPE int struct TNode //定义线性表结构 { TYPE element; struct TNode *next; }; typedef struct TNode Node; 13.2.2 用线性表实现队列操作 链式队列 用链表表示的队列简称链式队列;它必须由头指针和尾指针才能唯一确定,实际上,链式队列的操作即为单链表插入和删除的特殊情况 Q.front Q.rear 空队列 Q.front Q.rear x 元素x入队列 元素y入队列 Q.front Q.rear y x 头元素出列 y x Q.front Q.rear struct TQueue //定义队列结构 { Node * head; Node * front; Node * rear; }; typedef struct TQueue Queue; ? void InitQueue
有哪些信誉好的足球投注网站
文档评论(0)