学习数据结构,整理一些相关程序,通过测试
#include<stdio.h>
#include<stdlib.h>
#define QUEEN_SIZE 50
typedef struct SeqQueue
{
int data[QUEEN_SIZE];
int front;
int rear;
}Queue;
Queue *initQueue()
{
Queue *q=(Queue*)malloc(sizeof(Queue));
if(q==NULL)
{
printf("malloc failed!");
exit(-1);
}
q->front = 0;
q->rear = 0;
return q;
}
int IsFull(Queue *q)
{
return ((q->rear+1)%QUEEN_SIZE == q->front);
}
int IsEmpty(Queue *q)
{
return (q->rear == q->front);
}
void EnQueue(Queue *q,int n)
{
if(IsFull(q))
{
return;
}
q->data[q->rear] = n;
q->rear = (q->rear+1)%QUEEN_SIZE;
}
int Dequeue(Queue *q)
{
if(IsEmpty(q))
return 0;
int temp=q->data[q->front];
q->front = (q->front+1)%QUEEN_SIZE;
return temp;
}
int main()
{
Queue *q = initQueue();
int i;
for(i=0;i<10;i++)
{
EnQueue(q,i);
}
while(!IsEmpty(q))
{
int data=Dequeue(q);
if(IsEmpty(q))
printf("%d",data);
else
printf("%d-> ",data);
}
}