#include "stdio.h"
#define MAXSIZE 100
typedef int DataType;
typedef struct
{ DataType data[MAXSIZE];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q)//初始化函数
{
Q->front=Q->rear=0;//指针初始化
}
int EmptyQueue(SeqQueue *Q)//判断队空函数
{
if(Q->front==Q->rear)//队伍为空
return 1;
else
return 0;
}
int InQueue(SeqQueue *Q,DataType x)//入队函数
{
if((Q->rear+1)%MAXSIZE==Q->front)//队列为满
{
printf("队满,不能入队元素!");
return 0;//队满不能入队
}
else//队不为满
{
Q->rear=(Q->rear+1)%MAXSIZE;//队尾指针增1
Q->data[Q->rear]=x;
return 1;
}
}
int DeQueue(SeqQueue *Q,DataType *x)//出队函数
{
if(EmptyQueue(Q))//调用判空函数EmptyQueue(Q),判断队列是否为空
{
printf("队空,不能入队元素!");
return 0;
}
else//队不为空
{
Q->front=(Q->front+1)%MAXSIZE;//队头指针增1
*x=Q->data[Q->front];//队头元素赋给指针x所指x所指变量
return 1;
}
}
int GetFront(SeqQueue *Q,DataType *x)//取队头函数
{
if(EmptyQueue(Q))//调用判空函数EmptyQueue(Q),判断队列是否为空
{
printf("队空,不能入队元素!");
return 0;
}
else//队不为空
{
*x=Q->data[Q->front+1]%MAXSIZE;
return 1;
}
}
void ShowQueue(SeqQueue *Q)//显示队列中元素函数
{
int p=Q->front;
if(p==Q->rear)
printf("队列为空,无元素!n");
else
{
printf("从队头起队列中的各元素为:");
while(p!=Q->rear)
{
printf("%5d",Q->data[p+1]);
p++;
}
}
}
void Menu()
{
printf("n 顺序队列的各种操作");
printf("n =================================================");
printf("n| 1——初始化队列 |");
printf("n| 2——入队操作 |");
printf("n| 3——出队操作 |");
printf("n| 4——求队头元素 |");
printf("n| 5——显示队中所有元素 |");
printf("n| 0——返回 |");
printf("n =================================================");
printf("n请输入菜单号(0-5):");
}
main()
{
int i,n,flag;
SeqQueue Q;
DataType x;
char ch1,ch2,a;
ch1='y';
while(ch1=='y'||ch1=='Y')
{ Menu();
scanf("%c",&ch2);
getchar();
switch(ch2)
{
case '1':
InitQueue(&Q);
printf("初始化完成!");
break;
case '2':
printf("请输入要入队的元素个数:");
scanf("%d",&n);
printf("请输入%d个入队的整数:",n);
for(i=0;i
二、程序运行结果



