#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Queue
{
int max;
int f,r;
int *elem;
};
typedef struct Queue *SeqQueue;
SeqQueue SetNullQueue(int m)
{
SeqQueue squeue;
squeue=(SeqQueue)malloc(sizeof(struct Queue));
if(squeue!=NULL)
{
squeue->elem=(int*)malloc(sizeof(int)*m);
if(squeue->elem!=NULL)
{
squeue->max=m;
squeue->f=0;
squeue->r=0;
return squeue;
}
}
else
{
printf("alloc failure!");
return NULL;
}
}
int IsNullQueue(SeqQueue squeue)
{
return (squeue->f==squeue->r);
}
void InQueue(SeqQueue squeue,int x)
{
if((squeue->r+1)%(squeue->max)==squeue->f)
printf("full!");
squeue->elem[squeue->r]=x;
squeue->r=(squeue->r+1)%(squeue->max);
}
void OutQueue(SeqQueue squeue)
{
if(IsNullQueue(squeue))
printf("empty!");
else
squeue->f=(squeue->f+1)%(squeue->max);
}
int FrontQueue(SeqQueue squeue)
{
if(IsNullQueue(squeue))
printf("empty!");
else
return(squeue->elem[squeue->f]);
}
void printQueue(SeqQueue squeue)
{
printf("\n");
if (IsNullQueue(squeue))
printf("\n The list is NULL ! \n");
else
{
for (int i = 0;i < squeue->max;i++)
printf("%d ",squeue->elem[i]);
}
printf("\n");
}
int main()
{
int m = 10;
SeqQueue queue1=SetNullQueue(m);
InQueue(queue1,1);
printQueue(queue1);
OutQueue(queue1);
printQueue(queue1);
system("pause");
}