#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /* 存储空间初始分配量 */
typedef int Status;
typedef int QElemType; /* QElemType类型根据实际情况而定,这里假设为int */
/* 循环队列的顺序存储结构 */
typedef struct
{
QElemType date[MAXSIZE];
int front; /* 头指针 */
int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */
}SqQueue;
Status InitQueue(SqQueue *Q)
{
Q->front=0;
Q->rear=0;
return 1;
}
Status ClearQueue(SqQueue *Q)
{
Q->front=0;
Q->rear=0;
return 1;
}
Status QueneEmpty(SqQueue Q)
{
if(Q.front==Q.rear)
return 1;
return 0;
}
Status GetHead(SqQueue Q,QElemType &e)
{
if(QueneEmpty(Q))
return 0;
e=Q.date[Q.front];
return 1;
}
Status EnQueue(SqQueue *Q,QElemType e)
{
if((Q->rear+1)%MAXSIZE==Q->front)
return 0;
Q->date[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
return 1;
}
Status DeQueue(SqQueue *Q,QElemType &e)
{
if( QueneEmpty(*Q))
return 0;
e=Q->date[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return 1;
}
int QueueLength(SqQueue Q)
{
return ((Q.rear-Q.front+MAXSIZE)%MAXSIZE);
}
Status QueueTraverse(SqQueue Q)
{
int i,e;
if (QueneEmpty(Q))
return 0;
while(!QueneEmpty(Q))
{
GetHead(Q,e);
printf("%d\n",e);
Q.front=(Q.front+1)%MAXSIZE;
}
}
进击的数据结构之六队列的基本操作-顺序结构
最新推荐文章于 2024-10-09 21:53:22 发布