queue.h
#ifndef QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED
typedef int ElementType;
struct queuenode;
typedef struct queuenode *Node;
typedef Node QueuePtr;
struct queuenode
{
ElementType data;
QueuePtr next;
};
struct queuerecord;
typedef struct queuerecord *Queue;
struct queuerecord
{
QueuePtr Front;
QueuePtr Rear;
};
Queue CreatQueue(void);
Queue EnQueue(ElementType X, Queue Q);
Queue DeQueue(Queue Q);
ElementType Front(Queue Q);
#endif // QUEUE_H_INCLUDED
queue.c
#include <stdio.h>
#include <malloc.h>
#include "queue.h"
Queue CreatQueue(void)
{
Queue Q=(Queue)malloc(sizeof(struct queuerecord));
Q->Rear=Q->Front=(QueuePtr)malloc(sizeof(struct queuenode));
if(Q==NULL)
printf("out of space!!!");
Q->Front->next=NULL;
return Q;
}
Queue EnQueue(ElementType X, Queue Q)
{
QueuePtr En;
En=(QueuePtr)malloc(sizeof(struct queuerecord));
En->data =X;
Q->Rear->next=En;
En->next=NULL;
Q->Rear=En;
return Q;
}
Queue DeQueue(Queue Q)
{
QueuePtr temp=(QueuePtr)malloc(sizeof(struct queuerecord));
temp=Q->Front->next;
Q->Front->next=temp->next;
if(Q->Rear==temp)
Q->Front =Q->Rear;
free(temp);
return Q;
}
ElementType Front(Queue Q)
{
return Q->Front->next->data;
}
main.c
#include <stdio.h>
#include <stdlib.h>
#include "queue.c"
int main()
{
int c;
Queue Q=(Queue)malloc(sizeof(struct queuerecord));
Q=CreatQueue();
while((c=getchar())!=EOF)
Q=EnQueue(c,Q);
while(Q->Front!= Q->Rear)
{
printf("%d \t",Front(Q));
Q=DeQueue(Q);
}
return 0;
}