#include"SeqQueue.h"
void main(){
Queue Q;
IniQueue(&Q);
ElemType v;
for(int i=1;i<=5;++i){
EnQueue(&Q,i);
}
ShowQueue(&Q);
DeQueue(&Q);
ShowQueue(&Q);
GetHead(&Q,&v);
printf("%d\n",v);
v=Length(&Q);
printf("%d\n",v);
ClearQueue(&Q);
ShowQueue(&Q);
}
#include"SeqQueue.h"
void IniQueue(Queue *Q){
Q->base=(ElemType *)malloc(sizeof(ElemType) * MAXSIZE);
assert(Q->base!=NULL);
Q->front=Q->rear=0;
}
void EnQueue(Queue *Q,ElemType x){
if(Q->rear>=MAXSIZE)
return;
Q->base[Q->rear++]=x;
}
void ShowQueue(Queue *Q){
for(int i=Q->front;i<Q->rear;++i){
printf("%5d",Q->base[i]);
}
printf("\n");
}
void DeQueue(Queue *Q){
if(Q->front==Q->rear)
return;
Q->front++;
}
void GetHead(Queue *Q,ElemType *v){
if(Q->front==Q->rear)
return;
*v=Q->base[Q->front];
}
int Length(Queue *Q){
return (Q->rear-Q->front);
}
void ClearQueue(Queue *Q){
Q->front=Q->rear=0;
}
void DestroyQueue(Queue *Q){
ClearQueue(Q);
Q->base=NULL;
}
#ifndef __SEQQUEUE_H__
#define __SEQQUEUE_H__
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#define ElemType int
#define MAXSIZE 8
typedef struct Queue{
ElemType *base;
int front;
int rear;
}Queue;
void IniQueue(Queue *Q);
void EnQueue(Queue *Q,ElemType x);
void ShowQueue(Queue *Q);
void DeQueue(Queue *Q);
void GetHead(Queue *Q,ElemType *v);
int Length(Queue *Q);
void ClearQueue(Queue *Q);
void DestroyQueue(Queue *Q);
#endif