queue.h
#ifndef QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED
typedef int ElementType;
struct queuerecord;
typedef struct queuerecord *Queue;
struct queuerecord
{
int Capacity;
int Front;
int Rear;
int Size;
ElementType *Array;
};
Queue CreatQueue(int maxelement);
int IsEmpty(Queue Q);
int IsFull(Queue Q);
void Dispose(Queue Q);
void MakeEmpty(Queue Q);
Queue EnQueue(ElementType X,Queue Q);
Queue DeQueue(Queue Q);
ElementType Front(Queue Q);
#endif // QUEUE_H_INCLUDED
queue.c
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
Queue CreatQueue(int maxelement)
{
Queue Q=(Queue)malloc(sizeof(struct queuerecord));
if(Q==NULL)
printf("out of space");
Q->Array=(ElementType *)malloc(sizeof(ElementType));
if(Q->Array==NULL)
printf("Error:out of space!!!");
Q->Capacity =maxelement;
MakeEmpty(Q);
return Q;
}
int IsEmpty(Queue Q)
{
return Q->Size==0;
}
int IsFull(Queue Q)
{
return Q->Size ==Q->Capacity;
}
void MakeEmpty(Queue Q)
{
Q->Front=Q->Rear=0;
Q->Size=0;
}
Queue EnQueue(ElementType X,Queue Q)
{
if(!IsFull(Q))
{
Q->Array[Q->Rear++] =X;
Q->Size++;
}
else
{
printf("error: queue is full!");
}
return Q;
}
Queue DeQueue(Queue Q)
{
if(!IsEmpty(Q))
{
Q->Front++;
Q->Size--;
}
else
printf("error: queue is empty!!!");
return Q;
}
ElementType Front(Queue Q)
{
if(!IsEmpty(Q))
return Q->Array[Q->Front];
else
{
printf("Error: queue is empty!!!");
return 0;
}
}
main.c
#include <stdio.h>
#include <stdlib.h>
#include "queue.c"
int main()
{
Queue Q=(Queue)malloc(sizeof(struct queuerecord));
int c;
Q=CreatQueue(10);
while(!IsFull(Q))
{
c=getchar();
Q=EnQueue( c ,Q);
}
while(!IsEmpty(Q))
{
printf("%d\t", Front(Q));
Q=DeQueue(Q);
}
return 0;
}