#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;
}
#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;
}