main.c
#include<stdio.h>
#include"queue.h"
int main()
{
int i = 0;
Queue * q = initQueue();
for(i=1;i<=10;i++)
{
enQueue(q, i);
}
qElemType x;
while(q->n > 0)
{
deQueue(q,&x);
printf("%d ",x);
}
printf("\n");
enQueue(q, 5);
enQueue(q, 8);
enQueue(q, 12);
enQueue(q, 14);
enQueue(q, 51);
deQueue(q,&x);
printf("%d ",x);
deQueue(q,&x);
printf("%d ",x);
deQueue(q,&x);
printf("%d ",x);
enQueue(q, 23);
enQueue(q, 31);
while(q->n > 0)
{
deQueue(q,&x);
printf("%d ",x);
}
printf("\n");
destroyQueue(q);
return 0;
}
list.c
#include<stdio.h>
#include <stdlib.h>
#include"queue.h"
Queue * initQueue()
{
Queue * q = (Queue *)malloc(sizeof(Queue));
q->front = 0;
q->rear = 0;
q->n = 0;
return q;
}
int enQueue(Queue * q,qElemType x)
{
if(q==NULL || q->n==MAX_ELEM_NUM)
{
return -1;
}
q->queue[q->rear] = x;
q->rear ++;
if(q->rear == MAX_ELEM_NUM)
q->rear = 0;
q->n ++;
return 0;
}
int deQueue(Queue * q,qElemType *x)
{
if(q==NULL || q->n==0)
{
return -1;
}
*x = q->queue[q->front];
q->front ++;
if(q->front == MAX_ELEM_NUM)
q->front = 0;
q->n --;
return 0;
}
int clearQueue(Queue * q)
{
if(q==NULL)
return -1;
q->front = 0;
q->rear = 0;
q->n = 0;
}
void destroyQueue(Queue * q)
{
if(q==NULL)
return ;
q->front = 0;
q->rear = 0;
q->n = 0;
free(q);
}
int getHead(Queue * q,qElemType *x)
{
if(q==NULL || q->n==0)
{
return -1;
}
*x = q->queue[q->front];
}
int isEmpty(Queue * q)
{
if(q->n == 0)
return 1;
else
return 0;
}
list.h
#ifndef __QUEUE_H__
#define __QUEUE_H__
#define MAX_ELEM_NUM 10
typedef int qElemType;
struct sqQueue
{
qElemType queue[MAX_ELEM_NUM];//队列数组
int front;//保存队头元素的下标
int rear;//保存下一个队尾元素的下标
int n;//保存队列中元素的个数
};
typedef struct sqQueue Queue;
Queue * initQueue();
int enQueue(Queue * q,qElemType x);
int deQueue(Queue * q,qElemType *x);
//清空一个队列
int clearQueue(Queue * q);
//销毁一个队列
void destroyQueue(Queue * q);
//获取队头元素,不出队
int getHead(Queue * q,qElemType *x);
//判断队列是否为空,为空返回1,否则返回0
int isEmpty(Queue * q);
#endif