- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
舞伴配对 while(!EmptyQueue(Fdancers)!EmptyQueue(Mdancers)) { DeQueue(Fdancers,p); printf(p.name); DeQueue(Mdancers,p); printf(p.name); } if(!EmptyQueue(Fdancers)){ p= GetHead(Fdancers) ; printf(“下一轮最先要得到舞伴的女士是%s”,p.name); }else if(!EmptyQueue(Mdancers)){ p= GetHead(Mdancers) ; printf(“下一轮最先要得到舞伴的男士是%s”,p.name); } } 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * 第三章 队列 队列 定义 特点 基本操作 存储结构 限定在线性表的一端(表尾)进行插入,而在线性表的另一端(表头)进行删除。在队列中允许插入的一端叫队尾(rear),允许删除的一端叫队头(front)。 1.队列也是一种线性结构; 2.对队列的操作按照“先进先出”的原则进行。 与栈相比,队列的插入、删除分别在线性表的表尾和表头进行。 取队头 读取非空队列中的队头元素 a1 a2 an … … 入队 向队列中插入一个新的元素,新插入的元素为队尾。 a1 a2 an e … … 出队 非空队列中,删除队头元素,其直接后继为新队头。 a1 a2 an … … 队列的存储结构 循环队列 链队列 用一组地址连续的存储单元依次存放自队头到队尾的数据元素。 利用链表存储队列中队头到队尾的数据元素。 需要设置队头和队尾位置标志 队头指针指向队头,队尾指针指向队尾。 链队列的表示和实现 定义 用链表表示的队列称为链队列。也就是用带头结点的单链表存储数据。设置头指针front指向头结点,设置尾指针rear指向尾结点。 C描述 typedef struct QNode{ ElemType data; struct QNode *next; } QNode, *QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; } LinkQueue; 链队列结点类型 链队列类型 链队列的基本形态 空队列 非空队列 通常链队列用单链表表示。为了操作方便,给链队列添加一个头结点,令头指针指向头结点。也就是说,带头结点的链队列中,非空队列中,队头指针指向头结点,队尾指针指向队尾结点。空队列中,队头指针和队尾指针均指向头结点。 Q.front Q.rear ∧ a1 ∧ an … Q.front Q.rear Q.front==Q.rear 链队列的基本操作 链队列的基本操作即为单链表的插入和删除的特殊情况,只是需要进一步修改尾指针或头指针。 初始化队列 入队列 出队列 取队头 清空队列 销毁队列 链队列的基本操作 Q.front = (QueuePtr)malloc(sizeof(QNode)); Q.rear = Q.front ; Q.front-next = NULL; 1.初始化为空队列 生成新结点为头结点,队头和队尾指针指向此结点。头结点的指针域为空。 链队列的基本操作 while(Q.front){ Q.rear=Q.front-next; free(Q.front); Q.front=Q.rear; } 2.销毁队列 链队列的基本操作 p = (QueuePtr) malloc (sizeof (QNode)); if (!p) exit (OVERFLOW); //存储分配失败 p-data = e; p-next = NULL; Q.rear-next = p; Q.rear = p; 3.入队 入队修改尾指针 链队列在入队前不需要判断队列是否满。入队元素动态分配内存,插入到队尾处,同时修改队尾指针。 链队列的基本操作 if (Q.front == Q.rear) return ERROR; p = Q.front-next; e = p-data; Q.front-next = p-nex
文档评论(0)