队列

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 1000
typedef struct queue
{
    int *data;
    int front;
    int last;
}Queue;
int InitQueue(Queue *q)
{
    q->data=(int *)malloc(sizeof(int)*MaxSize);
    if(!q->data)
        return 0;
    q->front=q->last=0;
    return 1;
}
void DestoryQueue(Queue *q)
{
    free(q->data);
    q->front=q->last=0;
}
void ClearQueue(Queue *q)
{
    q->front=q->last=0;
}
int QueueEmpty(Queue q)
{
    return q.front==q.last;
}
int QueueLength(Queue q)
{
    return q.last-q.front;
}
int GetHead(Queue q)
{
    return q.data[q.front];
}
int EnQueue(Queue *q,int val)
{
    if(q->last==MaxSize)
        return 0;
    q->data[q->last++]=val;
    return 1;
}
int DeQueue(Queue *q)
{
    if(QueueEmpty(*q))
        return 0;
    q->front++;
    return 1;
}


void QueueTraverse(Queue q)
{
    int i;
    for(i=q.front;i<q.last;i++)
        printf("%d%c",q.data[i],i==q.last-1?'\n':' ');
}
int main()
{
    Queue *q;
    q=(Queue *)malloc(sizeof(Queue));
    InitQueue(q);
    EnQueue(q,1);
    EnQueue(q,2);
    EnQueue(q,3);
    EnQueue(q,4);
    while(!QueueEmpty(*q))
    {
        printf("%d ",GetHead(*q));
        DeQueue(q);
    }
    return 0;
}

你可能感兴趣的:(队列)