队列的实现及应用.docVIP

  • 20
  • 0
  • 约1.57千字
  • 约 3页
  • 2017-08-18 发布于重庆
  • 举报
队列的实现及应用.doc

实验四 队列的实现及应用 1、掌握队列的类型定义方法。 2、理解和掌握循环队列解决假溢出的方法。 二、实验内容 1、构造实现循环队列 实验代码 #includestdio.h #includestdlib.h #define MAX_SIZE 5 //-------------定义队列------------- typedef struct Queue { int *data; int front; int rear; }Queue; //---------------初始化---------- void Init_Queue(Queue *q) { q-data=(int *)malloc((MAX_SIZE)*sizeof(int)) ; q-front=q-rear=0; } ///---------------入队----------- void getIn(Queue * q,int elem) { if((q-rear+1)%MAX_SIZE==q-front) { printf(队列已满!\n); exit(0); } q-data[q-rear]=elem; q-rear=(q-rear+1)%MAX_SIZE; printf(入队:%d\n,elem);//测试入队 } ///--------------出队------------ int getOut(Queue *q) { int elem; if(q-rear==q-front) { printf(队列为空!); exit(0); } elem=q-data[q-front]; q-front=(q-front+1)%MAX_SIZE; printf(\n出队:%d\n,elem);//测试出队 return elem; } //----------------遍历------------ void Visit(Queue *q) { int visit=q-front; printf(遍历:); while(visit!=q-rear) { printf(%d ,q-data[visit]); visit=(visit+1)%MAX_SIZE; } } //-------------获取头元素--------------- int getHead(Queue *q) { return q-data[q-front]; } //---------------获取长度--------- int getLength(Queue *q) { int length; length=(q-rear-q-front+MAX_SIZE)%MAX_SIZE; return length; } ///--------------主函数----------- void main() { Queue q,*p; p=q; Init_Queue(p); //初始化 getIn(p,8); //入队 getIn(p,11); //入队 getIn(p,3); //入队 getIn(p,14); //入队 //getIn(p,19); //入队 Visit(p); //遍历 printf(\n队列长度为:%d\n,getLength(p)); //求队列长度 getOut(p); //出队 printf(头元素:%d\n,getHead(p)); Visit(p); //遍历 getOut(p); //出队 getIn(p,23); //入队 getIn(p,16); getIn(p,15); getIn(p,19); //多次入队 ,查看溢出处理:由结果知队列始终有一个位置为空,既队列满时还剩余一个储存位置 getOut(p); //出队 getOut(p); //出队 }

文档评论(0)

1亿VIP精品文档

相关文档