数据结构与算法 --循环队列

顺序存储结构:
优点:实现简单。
缺点:空间有限。

  1. 结构定义

define TRUE 1

define FALSE 0

define ERROR 0

define OK 1

define MAXSIZE 20

typedef int MKStatus;
typedef int MKData;
typedef int MKElemType;

//栈结构体
typedef struct {
MKElemType data[MAXSIZE];
int front;
int rear;
}MKQueue;

1.1 初始化队列
MKStatus initQueue(MKQueue *Q) {
Q->front = Q->rear = 0;
return OK;
}

1.2 清空队列
MKStatus clearQueue(MKQueue * Q) {
Q->front = Q->rear = 0;
return OK;
}

1.3 判断队列是否是空
MKStatus queueEmpty(MKQueue Q) {
if (Q.front == Q.rear) {
return OK;
}else {
return ERROR;
}
}

1.4 获取对于长度
int getQueueLength(MKQueue Q) {
return (Q.rear+(MAXSIZE-Q.front)) % MAXSIZE;
}

1.5 获取队列的front
MKStatus queueFront(MKQueue Q,MKElemType e) {
if (Q.front == Q.rear) {
printf("空队列");
return ERROR;
}else {
e = Q.data[Q.front];
return OK;
}
}

1.6 入对列
MKStatus inQueue(MKQueue *Q , MKElemType e) {
if ((Q->rear+1) % MAXSIZE == Q->front) {
printf("队列已满");//空出一个空间,
return OK;
}else {
e = Q->data[Q->rear];
Q->rear = (Q->rear + 1) % MAXSIZE;
return ERROR;
}
}

1.7 出队列
MKStatus OutQueue(MKQueue *Q,MKElemType *e) {
if (Q->rear == Q->front) {
return ERROR;
}else {
*e = Q->data[Q->front];
Q->front = (Q->front+1)%MAXSIZE;
return OK;
}
}

1.8 遍历队列
MKStatus traverseQueue(MKQueue Q , MKElemType e) {
if (Q.front == Q.rear) {
printf("空队列");
return ERROR;
}
int index = Q.front;
for (index = Q.front; index != Q.rear; index=((index+1)%MAXSIZE)) {
printf("%d",Q.data[index]);
}
return OK;
}

你可能感兴趣的:(数据结构与算法 --循环队列)