队列的入队出队初始化操作

上传人:M****1 文档编号:510204171 上传时间:2023-06-17 格式:DOC 页数:8 大小:752.50KB
返回 下载 相关 举报
队列的入队出队初始化操作_第1页
第1页 / 共8页
队列的入队出队初始化操作_第2页
第2页 / 共8页
队列的入队出队初始化操作_第3页
第3页 / 共8页
队列的入队出队初始化操作_第4页
第4页 / 共8页
队列的入队出队初始化操作_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《队列的入队出队初始化操作》由会员分享,可在线阅读,更多相关《队列的入队出队初始化操作(8页珍藏版)》请在金锄头文库上搜索。

1、-实践考核题第一题设计报告书学生*学生*099*所在地区*提交日期年/月2021/6实践题目利用队列的构造解决实际问题需求分析置空函数:根据函数的形参,即传递进来的队列指针,调用它的首指针和尾指针让两个指针相等,就把队列中的元素全部清空。入队函数:首先判断该队列是否已满,如果队列已满,就退出操作。否则,执行入队操作的语句,由于是循环队列所以在移动尾指针时,要把尾指针的位置取余运算queue.rear=(queue.rear+1)%ma*size;,然后把数据元素赋给尾指针(queue,dataqueue.rear=*;)。出队函数:当有数据元素要出队时,首先判断该队列是否为空,如果为空时,元素

2、出队列失败。否则,当队列不为空时,执行出队操作queue.front=(queue.front+1)%ma*size;返回数值1,说明出队成功。判空函数:该函数是用来判断队列是否为空的,是被别的函数调用作为判断条件用,假设果为空的话 就返回数值0,标志不能继续执行下面的语句。判断为空的条件是:queue.rear=queue.front;如果为空返回值为1,否则返回值为0。概要设计1) 置空 setnull ( queue ) 将队列 queue 置成空队列 调用setnull(queue)函数把队列queue的顶端指针和低端指针指向同一块地址,这样就把队列置空。当队列中的数据元素不用或者必须

3、要清楚的时候,就必须调用该函数把队列中的数据清空才能在插入新的数据供用户操作使用。2) 入队 enqueue ( queue , * ) 将元素 * 插入队列 queue 的尾部调用函数enqueue(queue,*),通过移动首指针找到要入队的数据,直到把队列的空间占满。有数据要进入队列时,调用该函数把数据元素*插入到队列中,先判断队列是否已满让后才能把数据元素插入到队尾。3) 出队 dequeue ( queue ) 删除队列 queue 的队头元素,函数返回被删除元素的值通过移动首指针把队首的指针往下移动一个地址,这样就把一个元素数据出队了。当要出队时,队列是从头指针开场一系列操作。先判

4、断该队列是否为空队列,如果不是的话,在进展出队操作把头指针往上移一个地址,这样就把数据出队了。4) 判队列是否为空EmptyQueue( queue ) 假设队列que为空,函数返回 0 ,否则返回 1判断队列的为空的条件是queue.rear=queue.front如果为空返回数值1,否则返回0。当出队操作时,需要判断队列是否为空,调用该函数。详细设计*include/头文件/带头结点的循环链表表示队列*define ma*size 10typedef struct int datama*size; int front; int rear;queue;/初始化队列queue setnull(

5、queue CQ) CQ.front=0; CQ.rear=0; return CQ ;/判断队列是否为空int EmptyQueue(queue CQ) if(CQ.rear=CQ.front) /队列为空,返回1 return 1; else return 0;/入队列queue enqueue(queue CQ,int *) if(CQ.rear+1)%ma*size=CQ.front) /队列空间已满 printf(queue full); else /将尾指针后移 CQ.rear=(CQ.rear+1)%ma*size; /并显示尾指针位置 printf(see what CQ.re

6、ar is :%dn,CQ.rear); /存入数据 CQ.dataCQ.rear=*; return CQ;/返回修改后的队列/出队列queue dequeue(queue CQ)/判断队列是否为空 if(EmptyQueue(CQ) printf(space queuen); else /记录将要去除的数据 int *=CQ.data(CQ.front+1)%ma*size; /头指针后移 CQ.front=(CQ.front+1)%ma*size; /输出去除掉的数据 printf(the deleted data %dn, *); return CQ;/主函数int main() qu

7、eue que; int *; /调用置空函数 que=setnull(que); printf(please put the data put 999 end:n); for(int i=0;i9;i+) /循环调用入队函数 scanf(%d,&*); /限定完毕符号 if(*=999) printf(put data end.n); break; else que=enqueue(que,*); /去除队列头元素,并返回删除的数据 que=dequeue(que);getch(); return 0;调试分析调试使用的Code:Blocks10.05情形一:输入8,9,4,5,15个数据后完毕,可以看到数据输入完毕提示信息put data end,后面紧跟着是头指针后移前的第一个元素:8情形二:一个数据也不输入,直接完毕数据的录入,会看到空队列提示信息space queue。设计总结对于队列的操作首先需要把队列置空,然后插入数据元素,在插入元素时需要判断是否队列已满,在数据元素出队时 需要先对队列判断是否为空,如果为空时 完毕程序继续执行,否则继续执行出队操作。通过关于队列的实践操作,重新稳固了关于队列使用的操作要求,复习了关于调用函数以及通过调用函数更改数值的算法。. z

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号