1、入队
2、出队
3、判断队空
4、清空队
5、销毁队
6、取对头
用开关语句进行操作选择
//顺序队
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef int QElemType;
typedef int Status;
typedef struct
{
QElemType *base;
int front;
int rear;
}SqQueue;
//初始化
Status InitQueue(SqQueue *Q)
{
Q->base=(QElemType*)malloc(MAXSIZE*sizeof(QElemType));
if(!Q->base) return ERROR;
Q->front=Q->rear=0;
return OK;
}
//求顺序队的长度
Status Queuelength(SqQueue Q)
{
return ((Q.rear-Q.front+MAXSIZE)%MAXSIZE);
}
//队的插入
Status Creat_Q(SqQueue *Q)
{
int i,length;
QElemType e;
if(!Q->base||(Q->rear+1)%MAXSIZE==Q->front) return ERROR;
printf("输入要入队的个数:");
scanf("%d",&length);
for(i=0;i<length;i++)
{scanf("%d",&e);
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
}
return OK;
}
//删除
Status Delete_Q(SqQueue *Q)
{
QElemType e;
if(Q->rear==Q->front||!Q->base) return ERROR;
while(Q->front!=Q->rear)
{
e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
printf("%d ",e);
}
return OK;
}
//判断是否为空
Status QueueEmpty(SqQueue Q)
{
if(Q.rear==Q.front) printf("队为空!\n");
else printf("队不为空!\n");
}
//清空队
Status Clear_Q(SqQueue *Q)
{
if(Q->rear!=Q->front)
{Q->front=Q->rear=NULL;
free(Q->base);}
return OK;
}
void Desktop()
{
printf("****************************\n");
printf("1、初始化\t2、元素入队\n3、元素出队\t4、判断队是否为空\n5、清空队\t6、取队头元素\n7、求队长度\t8、清屏\n0、退出\n");
printf("****************************\n");
}
//取队头元素
Status Get_Head(SqQueue Q)
{
if(Q.front!=Q.rear)
return Q.base[Q.front];
}
int main()
{
SqQueue Q;
int i,j,k;
Desktop();
while(1)
{
printf("请输入选择:");
scanf("%d",&k);
if(k==0) break;
switch(k)
{
case 1://1、初始化
{
i=InitQueue(&Q);
if(i==1) printf("分配成功!\n");
else if(i==0) printf("分配失败!\n");
}break;
case 2://2、元素入队
{
i=Creat_Q(&Q);
if(i==1) printf("入队成功!\n");
}break;
case 3://3、元素出队
{
i=Delete_Q(&Q);
if(i==i) printf("出队成功!\n");
}break;
case 4://4、判断队是否为空
{
QueueEmpty(Q);
}break;
case 5://5、清空队
{
i=Clear_Q(&Q);
if(i==1) printf("清空成功\n");
}break;
case 6://6、取队头元素
{
i=Get_Head(Q);
printf("对头元素为:%d\n",i);
}break;
case 7://7、求队长度
{
i=Queuelength(Q);
printf("队的长度为:%d\n",i);
}break;
case 8:
{
system("cls");
Desktop();
}break;
}
}
system(“pause”);
}