数据结构之顺序循环队列

来源:互联网 发布:ovid数据库 编辑:程序博客网 时间:2024/05/16 00:50

一、存储结构

#define MAXSIZE 10typedef struct{int data[MAXSIZE];int front;       //头指针:不空时指向队头元素int rear;        //尾指针:不空时指向队列尾元素的下一个位置}SqQueue;

二、基本操作

1、初始化队列

void InitQueue(SqQueue &Q){Q.front = Q.rear = 0;}

2、清空队列

void ClearQueue(SqQueue &Q){Q.front = Q.rear = 0;}

3、求队列长度

int QueueLength(SqQueue Q){return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;}

4、入队列

int EnQueue(SqQueue &Q, int e){if ((Q.rear+1) % MAXSIZE == Q.front)return 0;//队满Q.data[Q.rear] = e;Q.rear = (Q.rear+1) % MAXSIZE;return 1;}

5、出队列

int DeQueue(SqQueue &Q, int &e){if(Q.front == Q.rear)return 0;//队空e = Q.data[Q.front];Q.front = (Q.front+1) % MAXSIZE;return 1;}

6、遍历队列

void QueueTraverse(SqQueue Q){int i;putchar('|');for(i = Q.front; i % MAXSIZE != Q.rear; i++)printf(" %d |", Q.data[i]);putchar('\n');}

完整测试代码传送门:http://download.csdn.net/detail/u013071074/7423945


0 0