2021-08-10

/*
*数据结构值顺序队列的基本操作,用菜单实现(初始化,判满,进队列,判空,出队列,从队头打印到队尾,从队尾打印到队头)
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define MAXSIZE 10
#define FALSE 0
#define TRUE 1

typedef struct {
char elem[MAXSIZE];
int front;
int rear;
}SeQueue;

//初始化队列
void InitQueue(SeQueue *Q){
Q->front=Q->rear=0;
}

//判空
int IsEmpty(SeQueue *Q){
if(Q->rearQ->front)
return TRUE;
else
return FALSE;
}
//判满
int IsFull(SeQueue *Q){
if((Q->rear+1)%MAXSIZE
Q->front)
return TRUE;
else
return FALSE;
}
//进队列
int EnterQueue(SeQueue *Q,char x){
if((Q->rear+1)%MAXSIZEQ->front)
return FALSE;
Q->elem[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXSIZE;
return TRUE;
}
//出队列 (从队头出,从队尾入)
int DeleteQueue(SeQueue *Q,char *x){
if(Q->rear
Q->front)
return FALSE;
*x=Q->elem[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return TRUE;
}
//求队列的长度
int LengthQueue(SeQueue *Q){
int sum=0;
int i;
for(i=Q->front+1;i<=Q->rear;i++)
sum++;
printf(“现在的队列的长度为:%d\n”,sum);
return TRUE;
}
//从队头打印到队尾
void PrintQueue(SeQueue *Q){
int t;
t=Q->front;
while (t !=Q->rear)
{
printf("%3c",Q->elem[t]);
t=(t+1)%MAXSIZE;
}
//printf("%3c",Q->elem[Q->front]);

}
//从队尾打印到队头
void PrintQueue2(SeQueue *Q){
int t;
t=Q->rear;
while (t !=Q->front)
{
printf("%3c",Q->elem[t]);
t=(t-1)%MAXSIZE;
}
printf("%3c",Q->elem[Q->front]);

}
int main(){
//创建一个队列Q
SeQueue Q;
char x;
char sel=’ ';
while(sel !=‘0’){
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(" 0.退出系统\n");
printf(“请输入选项[0-7]:\n”);
sel=getch();
switch (sel)
{
case ‘1’:
printf(“初始化队列\n”);
InitQueue(&Q);
printf(“初始化成功\n”);
system(“pause”);
break;

        case '2':
            fflush(stdin);//清除输入缓冲区
            printf("进队列操作.\n");
            printf("请输入你要进入队列的数据:\n");
            scanf("%c",&x);
            if(EnterQueue(&Q,x)==true)
            printf("进队列成功!\n");
            else
            printf("进队列失败!\n");
            system("pause");
            break;

        case '3':
            printf("出队列操作.\n");
            if(DeleteQueue(&Q,&x))
            printf("出队列成功!\n");
            else
            printf("出队列失败!\n");
            system("pause");
            break;
            
        case '4':
            printf("打印队列长度操作.\n");
            LengthQueue(&Q);
            system("pause");
            break;
        
        case '5':
            printf("(从队头到队尾)打印队列操作.\n");
            printf("现在队列的元素为:");
            PrintQueue(&Q);
            system("pause");
            break;
        
        case '6':
            system("cls");
            break;
        
        case '7':
            printf("(从队尾到队头)打印队列操作.\n");
            printf("现在队列中的元素为.\n");
            PrintQueue2(&Q);
            system("pause");
            break;
        
        case '0':
            printf("\n谢谢使用,再见!\n");
            break;
        
        default:
            printf("你输入的选项不合法,请重新输入!\n");
            printf("按任意键继续\n");
            system("pause");
            

 }

}
return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值