标签:循环队列
1:头文件:#include"DQueue.h"
#pragma once #include<stdio.h> #include<stdlib.h> #define ElemType int #define SizeFull 20 typedef struct Queue { ElemType *data; int sizefull; int front; int rear; }Queue; void Show(); //显示菜单 void InitQueue(Queue *Q);//初始化队列 void DestoryQueue(Queue *Q);//摧毁队列 void ClearQueue(Queue *Q);//清除队列 bool IsFull(Queue *Q);//判空 bool IsEmpty(Queue *Q);//判满 int QueueLength(Queue *Q);//求队列长度 void EnQueue(Queue *Q,ElemType x);//入队列 void DeQueue(Queue *Q);//出队列 void ShowQueue(Queue *Q);//显示队列
2:功能实现DQueue.cpp:
<pre name="code" class="cpp">#include"DQueue.h" void InitQueue(Queue *Q) { Q->data=(ElemType*)malloc(sizeof(ElemType)*SizeFull); if(Q->data==NULL) { printf("开辟内存失败\n"); return; } Q->sizefull=SizeFull; Q->front=Q->rear=0; } void Show() { printf("************************************************\n"); printf("*[1]: 入栈 [2]: 出栈 *\n"); printf("*[3]: 栈长度 [4]: 摧毁栈 *\n"); printf("*[5]: 清理栈 [6]: 显示栈 *\n"); printf("*[0]: 退栈 *\n"); printf("************************************************\n"); printf("请选择:"); } void DestoryQueue(Queue *Q) { free(Q->data); Q->front=Q->rear=Q->sizefull=0; } void ClearQueue(Queue *Q) { Q->front=0; Q->rear=0; } bool IsFull(Queue *Q) { return (Q->rear+1)%Q->sizefull==Q->front; } bool IsEmpty(Queue *Q) { return Q->rear%Q->sizefull==Q->front; } int QueueLength(Queue *Q) { return Q->rear%Q->sizefull; } void EnQueue(Queue *Q,ElemType x) { if(IsFull(Q)) { printf("空间已满\n"); return; } Q->data[Q->rear]=x; Q->rear=(Q->rear+1)%Q->sizefull; } void DeQueue(Queue *Q) { if(IsEmpty(Q)) { printf("队列为空,无法删除\n"); return; } Q->front=(Q->front+1)%Q->sizefull; } void ShowQueue(Queue *Q) { for(int i=Q->front;i!=Q->rear;i=(i+1)%Q->sizefull) { printf("%d ",Q->data[i]); } printf("\n"); }
<pre name="code" class="cpp">#include"DQueue.h" void main() { Queue Q; InitQueue(&Q); ElemType x; int Length; int pos=1; while(pos) { Show(); scanf("%d",&pos); switch(pos) { case 1: printf("请输入数据,以-1结束:"); while(scanf("%d",&x),x!=-1) { EnQueue(&Q,x); } break; case 2: DeQueue(&Q); break; case 3: Length=QueueLength(&Q); printf("Length=%d\n",Length); break; case 4: DestoryQueue(&Q); break; case 5: ClearQueue(&Q); break; case 6: ShowQueue(&Q); break; default : break; } } }
标签:循环队列
原文地址:http://blog.csdn.net/zhou753099943/article/details/45653383