#include <stdio.h>
#include <stdlib.h>
struct SeQueue{
int MAXNUM;
int f,r;
int *q;
};
typedef struct SeQueue *PSeQueue;
/* 创建空队列*/
PSeQueue creatEmptyQueue_seq(int m)
{
PSeQueue queue=(PSeQueue)malloc(sizeof(struct SeQueue));
if(queue->f!=0||queue->r!=0){
queue->q=(int)malloc(sizeof(int)*m);
if(queue->q){
queue->MAXNUM=m+1;
queue->f=0;
queue->r=0;
return(queue);
}
else free(queue);
}
printf("Out of Space!!!\n");
return NULL;
}
/*判断队列是否为空*/
int isEmptyQueue_seq(PSeQueue paqu)
{
return(paqu->f==paqu->r);
}
/*入队*/
void enQueue_seq(PSeQueue paqu,int x)
{
if((paqu->r+1)%paqu->MAXNUM==paqu->f)
printf("Full queue.\n");
else{
paqu->q[paqu->r]=x;
paqu->r=(paqu->r+1)%paqu->MAXNUM;
}
}
/*出队*/
void deQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
paqu->f=(paqu->f+1)%paqu->MAXNUM;
}
/*取队列的头元素*/
int frontQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
return(paqu->q[paqu->f]);
}
int main()
{
int m,b=1;
PSeQueue A;
printf("请输入顺序队列的大小:\n");
scanf("%d",&m);
A=creatEmptyQueue_seq(m);
while(b==1){
printf("请选择你要的操作:\n");
printf("1:显示全部数据:\n");
printf("2:入队:\n");
printf("3:出队:\n");
printf("4:取队列顶元素:\n");
int op;
int c,j,k,m1;
scanf("%d",&op);
switch(op){
case 1:
printf("显示全部数据:\n");
j=A->r;
k=A->f;
for(k=0;k<j;k++)
printf("%d ",A->q[k]);
break;
case 2:
printf("入队:\n");
for(m1=0;m1<m;m1++){
printf("请继续输入:\n");
scanf("%d",&c);
enQueue_seq(A,c);
}
break;
case 3:
printf("出队:\n");
printf("%d\n",A->q[A->f]);
deQueue_seq(A);
break;
case 4:
printf("取队列头元素:\n");
frontQueue_seq(A);
printf("%d\n",A->q[A->f]);
}
printf("\n是否需要继续执行此类操作,需要操作请输入“1”,退出输入“0”\n");
scanf("%d",&b);
if(b==0){
printf(" *** 退出执行! ***");
}
}
return 0;
}
#include <stdlib.h>
struct SeQueue{
int MAXNUM;
int f,r;
int *q;
};
typedef struct SeQueue *PSeQueue;
/* 创建空队列*/
PSeQueue creatEmptyQueue_seq(int m)
{
PSeQueue queue=(PSeQueue)malloc(sizeof(struct SeQueue));
if(queue->f!=0||queue->r!=0){
queue->q=(int)malloc(sizeof(int)*m);
if(queue->q){
queue->MAXNUM=m+1;
queue->f=0;
queue->r=0;
return(queue);
}
else free(queue);
}
printf("Out of Space!!!\n");
return NULL;
}
/*判断队列是否为空*/
int isEmptyQueue_seq(PSeQueue paqu)
{
return(paqu->f==paqu->r);
}
/*入队*/
void enQueue_seq(PSeQueue paqu,int x)
{
if((paqu->r+1)%paqu->MAXNUM==paqu->f)
printf("Full queue.\n");
else{
paqu->q[paqu->r]=x;
paqu->r=(paqu->r+1)%paqu->MAXNUM;
}
}
/*出队*/
void deQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
paqu->f=(paqu->f+1)%paqu->MAXNUM;
}
/*取队列的头元素*/
int frontQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
return(paqu->q[paqu->f]);
}
int main()
{
int m,b=1;
PSeQueue A;
printf("请输入顺序队列的大小:\n");
scanf("%d",&m);
A=creatEmptyQueue_seq(m);
while(b==1){
printf("请选择你要的操作:\n");
printf("1:显示全部数据:\n");
printf("2:入队:\n");
printf("3:出队:\n");
printf("4:取队列顶元素:\n");
int op;
int c,j,k,m1;
scanf("%d",&op);
switch(op){
case 1:
printf("显示全部数据:\n");
j=A->r;
k=A->f;
for(k=0;k<j;k++)
printf("%d ",A->q[k]);
break;
case 2:
printf("入队:\n");
for(m1=0;m1<m;m1++){
printf("请继续输入:\n");
scanf("%d",&c);
enQueue_seq(A,c);
}
break;
case 3:
printf("出队:\n");
printf("%d\n",A->q[A->f]);
deQueue_seq(A);
break;
case 4:
printf("取队列头元素:\n");
frontQueue_seq(A);
printf("%d\n",A->q[A->f]);
}
printf("\n是否需要继续执行此类操作,需要操作请输入“1”,退出输入“0”\n");
scanf("%d",&b);
if(b==0){
printf(" *** 退出执行! ***");
}
}
return 0;
}