#include <stdio.h>
#define MAX 10
#define TRUE 1
typedef struct
{
int data[MAX];
int front, rear;
int isNull;
}Sequeue;
void Init(Sequeue *sq)
{
sq->front=0;
sq->rear=0;
sq->isNull=1;
}
int Ins(Sequeue *sq,int x)
{
if((sq->front+1)%MAX ==(sq->rear+1)%MAX && sq->isNull!=1)
{
printf("/nFull squeue!New data in the old position!/n");
sq->rear=(sq->rear+1)%MAX;
sq->data[sq->rear]=x;
sq->front=(sq->front+1)%MAX;
}
else
{
sq->rear=(sq->rear+1)%MAX;
sq->data[sq->rear]=x;
printf("/nData in/n");
sq->isNull=0;
return(TRUE);
}
sq->isNull=0;
return x;
}
int Del(Sequeue *sq,int x)
{
if(sq->rear==sq->front && sq->isNull==1)
{
printf("the queue is empty/n");
return NULL;
}
else
{
if((sq->rear)%MAX==(sq->front+1)%MAX)
sq->isNull=1;
sq->front=(sq->front+1)%MAX;
x= sq->data[sq->front];
printf("/nData out/n");
return(x);
}
}
int Print(Sequeue *sq)
{
int k;
if(sq->rear==sq->front && sq->isNull==1)
{
printf("the queue is empty/n");
return NULL;
}
else
printf("The sequeue is:/n");
k=sq->front;
do
{
k++;
k=k%MAX;
printf("-%d-",sq->data[k]);
}while(k!=sq->rear);
return 1;
}
main()
{
Sequeue *head=(Sequeue*)malloc(sizeof(Sequeue));
int c,x;
clrscr();
Init(head);
do
{
printf("/n**********/nPlease select a number to input:/n1 insert a number/n2 delete a number/n3 print the squeue/n4 quit the program/n**********/n");
c=getch();
switch(c)
{ case'1':
printf("/nPlease Enter a number/n");
scanf("%d",&x);
Ins(head,x);
break;
case '2':
Del(head,x);
break;
case'3':
Print(head);
break;
}
}while(c!='4');
free(head);
}
多多指点