队列的入队出队初始化操作_第1页
队列的入队出队初始化操作_第2页
队列的入队出队初始化操作_第3页
队列的入队出队初始化操作_第4页
队列的入队出队初始化操作_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、当有数据元素要出队时,首先判断该队列是否为空,如果为空时,元素出队列失败。否则,当队列不为空时,执行出队操作(queue.front=(queue.front+1)%maxsize;) 返回数值1,说明出队成功。判空函数:该函数是用来判断队列是否为空的,是被别的函数调用作为判断条件用,若果为空的话 就返回数值0,标志不能继续执行下面的语句。判断为空的条件是:queue.rear=queue.front;如果为空返回值为1,否则返回值为0。概要设计1) 置空 setnull ( queue ) 将队列 queue 置成空队列 调用setnull(queue)函数把队列queue的顶端指针和低端指

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

4、就把一个元素数据出队了。当要出队时,队列是从头指针开始一系列操作。先判断该队列是否为空队列,如果不是的话,在进行出队操作把头指针往上移一个地址,这样就把数据出队了。4) 判队列是否为空 EmptyQueue( queue ) 若队列que为空,函数返回 0 ,否则返回 1 判断队列的为空的条件是(queue.rear=queue.front)如果为空返回数值1,否则返回0。当出队操作时,需要判断队列是否为空,调用该函数。 详细设计 #include<stdio.h>/头文件/带头结点的循环链表表示队列#define maxsize 10typedef struc

5、t int datamaxsize; int front; int rear;queue;/初始化队列queue setnull(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 x) if(CQ.rear+1)%maxsize=CQ.front) /队列空间已满 printf("queue full"

6、;); else /将尾指针后移 CQ.rear=(CQ.rear+1)%maxsize; /并显示尾指针位置 printf("see what CQ.rear is :%dn",CQ.rear); /存入数据 CQ.dataCQ.rear=x; return CQ;/返回修改后的队列/出队列queue dequeue(queue CQ)/判断队列是否为空 if(EmptyQueue(CQ) printf("space queuen"); else /记录将要清除的数据 int x=CQ.data(CQ.front+1)%maxsize; /头指针后移

7、CQ.front=(CQ.front+1)%maxsize; /输出清除掉的数据 printf("the deleted data %dn", x); return CQ;/主函数int main() queue que; int x; /调用置空函数 que=setnull(que); printf("please put the data (put 999 end):n"); for(int i=0;i<9;i+) /循环调用入队函数 scanf("%d",&x); /限定结束符号 if(x=999) printf("put data end.n"); break; else que=enqueue(que,x); /清除队列头元素,并返回删除的数据 que=dequeue(que);getch(); return 0;调试分析调试使用的Code:Blocks10.05情形一:输入8,9,4,5,15个数据后结束,可以看到数据输入结束提示信息(put data end),后面紧跟着是头指针后移前的第一个元素:8情形二:一个数据也不输入,直接结束数据的录入,会看到空队列提示信息(space queue)。设计总结 对于队列的操作首先需要把队列置空,然后插

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论