ADT - 顺序队列(Squencial Queue)
2017-10-29 15:03
239 查看
//ADT Squencial Queue #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1 #define MAXQSIZE 100 #define INCREASEQSIZE 10 typedef int QElemType; typedef int Status; typedef struct { QElemType *base; int front;//头指针 int reer;//尾指针 int length;//队列长度 }SqQueue; //构造一个空队列 Status InitQueue(SqQueue &Q) { Q.base = (QElemType *)malloc(MAXQSIZE * sizeof(QElemType)); if(!Q.base) exit(OVERFLOW); Q.front = Q.reer = 0; Q.length = MAXQSIZE; return OK; } //销毁队列Q Status DestroyQueue(SqQueue &Q) { free(Q.base); Q.front = Q.reer = 0; Q.length = 0; return OK; } //清空队列 Status ClearQueue(SqQueue &Q) { Q.front = Q.reer = 0; Q.length = 0; return OK; } //插入元素 Status EnQueue(SqQueue&Q, QElemType e) { if((Q.reer+1)%Q.length == Q.front) { Q.base = (QElemType *)realloc(Q.base, sizeof(QElemType) * (Q.length + INCREASEQSIZE)); Q.length += INCREASEQSIZE; } Q.base[Q.reer] = e; Q.reer = (Q.reer + 1) % Q.length; return OK; } //删除元素 Status DeQueue(SqQueue &Q,QElemType &e) { if(Q.front == Q.reer) return ERROR; e = Q.base[Q.front]; Q.front = (Q.front + 1) % Q.length; return OK; } //判断队列是否为空 Status QueueEmpty(SqQueue Q) { if(Q.front == Q.reer) return TRUE; return FALSE; } //求队列长度 int QueueLength(SqQueue Q) { return (Q.reer - Q.front + Q.length) % Q.length; } //求队头元素的值 Status GetHead(SqQueue Q, QElemType &e) { if(Q.front == Q.reer) return ERROR; e = Q.base[Q.front]; return OK; } //遍历 Status QueueTraverse(SqQueue Q) { for(int i = Q.front; i != Q.reer; i = (i + 1) % Q.length) { if(i == Q.front) cout << Q.base[i]; else cout << ' ' << Q.base[i]; } cout << endl; }
相关文章推荐
- C_栈和队列(ADT)-队列的非循环(无头指针)顺序表示和实现
- 以循环顺序表实现的队列ADT(C语言版)
- 数据结构-->(循环)队列 【队列的顺序实现】ADT
- C_栈和队列(ADT)-队列的非循环(带头指针)顺序表示和实现
- C语言 队列 顺序结构 实现
- 循环队列的顺序存储实现
- 队列ADT实现
- Java用数组实现顺序队列
- C/C++疑问之为何一般采用循环队列而不是顺序队列
- 数据结构与算法 - 3.4 队列ADT
- 循环队列-顺序存储-c语言实现
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 顺序队列(环形队列)
- 顺序队列基本操作
- 队列的实现:顺序队列
- 队列顺序存储 - 设计与实现 - API函数
- 顺序队列(循环队列)+链式队列+打印杨辉三角
- 2.4队列的顺序结构
- 请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素
- 顺序队列的实现