1、编写程序,做一个菜单,用户可以通过菜单选择:
输入一个整数并入队
出队
输出队列中的元素。
#include<stdio.h>
#include<stdlib.h>
struct Queue {
int * Data; // 动态分配存储空间
int Front; // 队头
int Rear; // 队尾
int Size; // 队列中元素个数
int MaxSize; // 队列最大容量
};
struct Queue * CreateQueue(int MaxSize) {
struct Queue *Q;
Q =(Queue*) malloc(sizeof(struct Queue));
Q->Data = (int*)malloc(sizeof(int) * MaxSize);
Q->Front = Q->Rear = 0;
Q->Size = 0;
Q->MaxSize = MaxSize;
return Q;
}
void EnQueue(struct Queue *Q, int X) {
if (Q->Size == Q->MaxSize) { /* 如果队列已满,则不能入队 */
printf("队列为满\n");
return;
}
Q->Data[Q->Rear ++] = X;
if (Q->Rear == Q->MaxSize) Q->Rear = 0;
Q->Size ++;
}
int DeQueue(struct Queue *Q) {
int tmp;
if (Q->Size == 0) { /* 如果队列为空,则不能出队 */
printf("队列为空\n");
return 0;
}
tmp = Q->Data[Q->Front ++];
if (Q->Front == Q->MaxSize) Q->Front = 0;
Q->Size --;
return tmp;
}
void shuchu(struct Queue *Q){
if(Q->Size==0)
printf("队列为空,不能输出\n");
else{
int c;
c=Q->Front;
printf("队列中的元素为:");
for(int i=0;i<Q->Size;i++){
printf("%d ",Q->Data[c++]);
}
printf("\n");}
}
int main(){
int x=0,a;
struct Queue *l;
l=CreateQueue(10);
EnQueue(l,1);
EnQueue(l,3);
EnQueue(l,5);
EnQueue(l,7);
while(x!=4){
printf("输入1-4选择功能:\n1.输入一个整数并入队 2.出队 3.输出队列中的元素 4.退出程序\n");
scanf("%d",&x);
if(x==1||x==2||x==3||x==4){
if(x==1){
scanf("%d",&a);
EnQueue(l,a);}
else if(x==2)
DeQueue(l);
else if(x==3)
shuchu(l);
else if(x!=4)
break;
}
else
printf("请不要输入1-4以外的值\n");}
}