目的:领会环形队列的存储结构和掌握环形队列中各种基本运算算法的设计。
内容:编写一个乘成sqqueue.cpp,实现环形队列(假设栈中的元素类型ElemType为char)的各种基本运算,并在此基础上设计一个程序3-3.cpp完成以下功能。
- 初始化队列q。
- 判断队列q是否非空。
- 依次进队元素a、b、c。
- 出队一个元素,输出该元素。
- 依次进队元素d、e、f。
- 输出出队序列。
- 释放队列。
//计算机 小淇在敲代码 实现环形队列的各种基本运算的算法 #include<stdio.h> #include<malloc.h> //环形队列 #define MaxSize 50 typedef char ElemType; char w; typedef struct { ElemType data[MaxSize]; int front,rear; }SqQueue; //(1)初始化环形队列 void InitQueue(SqQueue* &q) { q=(SqQueue*)malloc(sizeof(SqQueue)); q->front=q->rear=0; } //(2)依次进队元素a、b、c bool enQueue(SqQueue* &q,ElemType e) { if((q->rear+1)%MaxSize==q->front) return false; q->rear=(q->rear+1)%MaxSize; q->data[q->rear]=e; return true; } //(3)判断环形队列q是否非空 bool QueueEmpty(SqQueue *q) { return(q->front==q->rear); } //(4)出队一个元素,输出该元素 bool deQueue(SqQueue* &q,ElemType&e) { if(q->front==q->rear) return false; q->front=(q->front+1)%MaxSize; e=q->data[q->front]; return true; } //(5)依次进队元素d、e、f //(6)输出出队序列 //(7)释放队列 void DestroyQueue(SqQueue* &q) { free(q); } //主函数 int main() { SqQueue *q; printf("计算机 小淇在敲代码 \n"); printf("环形队列的各种基本运算的算法 \n"); printf("(1)初始化环形队列 \n"); InitQueue(q); printf("(2)依次进队元素a、b、c \n"); if(!enQueue(q,'a')) printf("\t提示:队满,不能进队\n"); if(!enQueue(q,'b')) printf("\t提示:队满,不能进队\n"); if(!enQueue(q,'c')) printf("\t提示:队满,不能进队\n"); printf("(3)判断环形队列q是否非空: %s\n",(QueueEmpty(q)?"空":"非空")); if(deQueue(q,w)==0) printf("队空,不能出列\n"); else printf("(4)出队一个元素,输出该元素: %c\n",w); printf("(5)依次进队元素d、e、f \n"); if(!enQueue(q,'d')) printf("\t提示:队满,不能进队\n"); if(!enQueue(q,'e')) printf("\t提示:队满,不能进队\n"); if(!enQueue(q,'f')) printf("\t提示:队满,不能进队\n"); printf("(6)输出出队序列: \n"); while(!QueueEmpty(q)) { deQueue(q,w); printf("%c",w); } printf("\n"); printf("(7)释放队列 \n"); DestroyQueue(q); return 0; }
文章来源:https://www.toymoban.com/news/detail-735963.html
文章来源地址https://www.toymoban.com/news/detail-735963.html
到了这里,关于实现环形队列的各种基本运算的算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!