制作一个菜单,用队列实现基本操作

来源:互联网 发布:springboot修改端口 编辑:程序博客网 时间:2024/04/28 20:36
#include<stdio.h>
#include <windows.h>
#include<string.h>
#define Maxsize 10
int  data[10]={0};
int  front=0;
int  rear=0;
int  count=0;
void Menu();
int  Queuein();
int  Queueout();
int  Traverse();
int  Empity();
int  Queuefront();
void Menu()
{
    printf("环队基本功能菜单\n");
    printf("==========\n");
printf("1数据进队\n");
printf("2数据出队\n");
printf("3显示数据(遍历)\n");
printf("4判断队空\n");
printf("5读取队头\n");
printf("6求链队长度\n");
printf("7结束程序\n");
    printf("==========\n");
}
int Queuein()
{
if(count>=Maxsize)
{
printf("环队数据已经满了");
return 0;
}
printf("请输入你要入队的数据:");
scanf("%d",&data[rear]);
printf("进队操作成功!\n");
rear=(rear+1)%Maxsize;
count++;
return 1;
}


int Queueout()
{
int num,i;
if(count==0)
{
printf("队中数据为空!\n");
return 0;
}
printf("请输入要出队列的次数:");
scanf("%d",&num);
if(num>count)
{
printf("输出的次数大于队列数!\n");
   return 0;
}
printf("出队的数据为:");
for(i=0;i<num;i++)
{
printf(" %2d ",data[front]);
front=(front+1)%Maxsize;
count--;
}
printf("\n");
return 0;
}
int Traverse()
{
int i;
if(count==0)
{
printf("队列内为空!\n");
return 0;
}
printf("环队数据为:");
for(i=front;i<count+front;i++)
{
printf("%3d",data[i%Maxsize]);
}
printf("\n");
return 1;
}


int Queuefront()
{
if(count==0)
{
printf("环队为空\n");
return 0;
}
else
        printf("队头数据为:%d\n",data[front]);
        return 1;
}
int Empity()
{
if(count<=0)
{
printf("环队为空!\n");
return 0;
}
printf("环队不为空!\n");
    return 1;
}
int main()
{
int selection;
while(1)
{
    Menu();
printf("请输入您的选择:\n");
scanf("%d",&selection);
    fflush(stdin);
switch(selection)
{
case 1:Queuein();break;
case 2:Queueout();break;
case 3:Traverse();break;
case 4:Empity();break;
case 5:Queuefront();break;
case 6:printf("环队长度为:%d\n",count);break;
case 7:exit(0);break;
default:printf("输入错误\n");break;
}
system("pause");
system("cls");
}
return 0;
}
原创粉丝点击