//
//顺序队列基本运算
//2013-10-14 23:27
//
#pragma once
#define MaxSize 5
typedef int ElemType;
typedef struct
{
ElemType elem[MaxSize];
int front,rear; //队首和队尾指针
}SqQueue;
void InitQueue(SqQueue* &q);
int enQueue(SqQueue* &q,ElemType e); //进队一个元素
int deQueue(SqQueue* &q,ElemType &e); //出队一个元素
void ClearQueue(SqQueue* &q);
int QueueEmpty(SqQueue* q);
int QueueLength(SqQueue* q);
void DisQueue(SqQueue* q);
#include "SqQueue.h"
#include <malloc.h>
#include <stdio.h>
void InitQueue( SqQueue* &q )
{
q = (SqQueue*)malloc(sizeof(SqQueue));
q->front = q->rear = 0;
}
int enQueue( SqQueue* &q,ElemType e ) //进队一个元素 ->front为空
{
if((q->rear+1)%MaxSize == q->front) //队满
{
printf("队满\n");
return 0;
}
q->rear = (q->rear+1)%MaxSize;
q->elem[q->rear] = e;
}
int deQueue( SqQueue* &q,ElemType &e ) //出队一个元素
{
if ( q->front == q->rear) //队空
{
return 0;
}
q->front = (q->front+1)%MaxSize;
e = q->elem[q->front];
}
void ClearQueue( SqQueue* &q )
{
free(q);
}
int QueueEmpty( SqQueue* q )
{
return q->front == q->rear;
}
int QueueLength( SqQueue* q )
{
return (q->rear - q->front +MaxSize)%MaxSize;
}
void DisQueue( SqQueue* q )
{
if (q->front == q->rear)
{
printf("空队/n");
}
int i = q->front+1;
while ( i%MaxSize != q->rear)
{
printf("%d,",q->elem[i%MaxSize]);
i++;
}
printf("%d,",q->elem[i%MaxSize]);
printf("\n");
}
#include "SqQueue.h"
int main()
{
SqQueue* q;
InitQueue(q);
enQueue(q,1);
DisQueue(q);
enQueue(q,2);
DisQueue(q);
enQueue(q,3);
DisQueue(q);
enQueue(q,4);
DisQueue(q);
enQueue(q,5);
ElemType data;
deQueue(q,data);
DisQueue(q);
ClearQueue(q);
return 0;
}