循环队列的操作和实现C语言.doc_第1页
循环队列的操作和实现C语言.doc_第2页
循环队列的操作和实现C语言.doc_第3页
循环队列的操作和实现C语言.doc_第4页
循环队列的操作和实现C语言.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

。循环队列的基本操作都可以实现,后面有代码。代码:#include#include#include#include#define MAX_SIZE 10/定义循环队列的长度typedef struct int*base; int front; int rear; int full;/队列是否已满的标志位Queue;int creat_queue(Queue*q);int en_queue(Queue*q,int e);int out_queue(Queue*q,int*e);int destroy_queue(Queue*q);int length_queue(Queue*q);void main() Queue q; int m,n,i,e,f,f1,k=0; int a1,a2,a3,a4,a5,a6;/用来接函数返回值 int *e1,*e2; q.base=NULL; e1=e2=&k;/对于指针最好这样初始化定义一下,因为只声明是没有分陪内存的,不能直接用*e printf(-循环队列的基本操作-n); printf(-1.创建一个空队列-n); printf(-2.单次入队列-n); printf(-3.单次出队列-n); printf(-4.集体入队列-n); printf(-5.集体出队列-n); printf(-6.队列元素个数-n); printf(-7.销毁队列-n); printf(-0.退出-n);loop: printf(请选择:); scanf(%d,&m); switch(m) case 1: a1=creat_queue(&q); if(a1=0) printf(队列已经存在,请先销毁原来队列!n); break; printf(OK!队列创建成功!n); break; case 2: printf(请输入要入队列的元素(整型):); scanf(%d,&e); a2=en_queue(&q,e); if(a2=-1) printf(队列不存在,请先创建队列!n); break;else if(a2=0) printf(入队失败!因为队列满了!n); break;else printf(OK!入队成功!n); break; case 3: a3=out_queue(&q,e1); if(a3=-1) printf(队列不存在,请先创建队列!n); break; else if(a3=0) printf(出队失败!因为队列为空!n); break; else printf(OK!出队成功); printf(出队元素为:%dn,*e1); break; case 4: printf(请输入您要入队列的个数:); scanf(%d,&n);for(i=0;ibase!=NULL)/队列已经存在,要先销毁 return 0;q-base=(int*)malloc(MAX_SIZE*sizeof(int);q-front=q-rear=0;q-full=0;return 1;int en_queue(Queue*q,int e) if(q-base=NULL) return -1;/是队列不存在 else if(q-full=1&q-front=q-rear) return 0;/入队前考虑队列是否满了else q-baseq-rear=e; q-rear=(q-rear+1)%MAX_SIZE;/实现循环,如果rear+1满了并不是真正的满了,可以循环 if(q-front=q-rear) q-full=1; return 1;int out_queue(Queue*q,int*e) if(q-base=NULL) return -1;/是队列不存在 if(q-full=0&q-front=q-rear) return 0; /出队前考虑队列是否为空 else *e=q-baseq-front;q-front=(q-front+1)%MAX_SIZE;/修改front位置 if(q-front=q-rear)q-full=0;/如果出队后两位置相同则队为空了return 1;int destroy_queue(Queue*q) if(q-base=NULL) return 0;/是队列不存在 free(q-base); q-base=NULL;return 1; int length_queue(Queue*q) if(q-base=NULL) return -1;/是队列不存在 else if(q-full=1&q-front=q-rear) return MAX_SIZE;/满队列时else return(q-rear-q-front+MAX_SIZE)%MAX_SIZE

温馨提示

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

最新文档

评论

0/150

提交评论