您的位置:首页 > 其它

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

2017-10-26 12:29 411 查看
#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: