队列的顺序存储结构
来源:互联网 发布:阿里云服务器怎么维护 编辑:程序博客网 时间:2024/04/29 09:44
队列的顺序存储结构——循环队列
循环队列的长度为(rear-front+QueueSize)%QueueSize
队空的条件: front=rear
队满的条件是: (rear+1)%QueueSize=front
#include<iostream>using namespace std;#define maxsize 20typedef int ElemType;typedef struct{ElemType data[maxsize];int front;//头指针int rear;//尾指针,若队列不空,指向队列尾元素的下一个位置 } SqQueue;bool InitQueue(SqQueue *pq){ cout << "Init Queue ..." << endl; pq->front=0; pq->rear=0; return true;}bool ClearQueue(SqQueue *pq){ cout << "Clear Queue ..." << endl; pq->front = 0; pq->rear = 0; return true;}bool QueueEmpty(SqQueue Sq){ return (Sq.front == Sq.rear); /* 队列空的标志 */} int QueueLength(SqQueue Sq){ /* 队列的当前长度 */ return (Sq.rear - Sq.front + MAXSIZE) % MAXSIZE;} /* 返回头元素 */bool GetHead(SqQueue Sq, ElemType *pe){ if (QueueEmpty(Sq)) return false; else { *pe = Sq.data[Sq.front]; cout << "Get Head Item " << *pe << endl; return true; }}bool EnQueue(SqQueue *pq, ElemType Elem){ /* 队列满 */ if (QueueLength(*pq) == MAXSIZE) return false; cout << "EnQueue Item " << Elem << endl; pq->data[pq->rear] = Elem;/* 将元素赋值给队尾 */ pq->rear = (pq->rear + 1) % MAXSIZE;/* rear指针向后移一位置, */ /* 若到最后则转到数组头部 */ return true;}bool DeQueue(SqQueue *pq, ElemType *pe){ if (QueueEmpty(*pq)) return false; *pe = pq->data[pq->front];/* 将队头元素赋值给*pe */ cout << "DeQueue Item " << *pe << endl; pq->front = (pq->front + 1) % MAXSIZE;/* front指针向后移一位置, */ /* 若到最后则转到数组头部 */ return true;}bool QueueTraverse(SqQueue Sq)//遍历 { cout << "Queue Traverse ..." << endl; for (int i = 0; Sq.front + i < Sq.rear; i = (i + 1) % MAXSIZE) cout << Sq.data[i + Sq.front] << ' '; cout << endl; return true;}int main(void){ SqQueue Sq; InitQueue(&Sq); for (int i = 0; i < 5; i++) EnQueue(&Sq, i); QueueTraverse(Sq); int result; GetHead(Sq, &result); DeQueue(&Sq, &result); DeQueue(&Sq, &result); if (!QueueEmpty(Sq)) cout << "Queue Length: " << QueueLength(Sq) << endl; QueueTraverse(Sq); return 0;}
0 0
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构---循环队列
- 队列的顺序存储结构(循环队列)
- 数据结构(队列):队列的顺序存储结构
- 队列的顺序表存储结构
- 队列的顺序存储结构与操作
- 队列的顺序存储结构与操作
- 队列的顺序存储结构和链式存储结构
- 数据结构:队列的顺序存储结构(循环队列)
- 队列---顺序队列存储结构的不足(假溢出)
- 数据结构:队列的顺序存储结构(循环队列)
- 队列的顺序存储结构之循环队列
- 【队列】之顺序存储结构
- spark式workcount虾皮
- 【OpenCV学习笔记】十二、图像的对比度和亮度调整及图像通道的分离与合并
- IO多路复用之epoll
- redis错误:BeginForkOperation: system error caught. error code=0x000005af
- 蓝桥杯历届试题——最大子阵(矩阵在线算法)
- 队列的顺序存储结构
- 密码学大事件! SHA-1 哈希碰撞实例
- IO多路复用select,poll,epoll的区别
- yum进程锁定的解决方法
- MYSQL操作(3)之索引
- DB2 restart database命令的作用总结
- Caffe学习系列(15):计算图片数据的均值
- [Spring Boot实战系列]
- 坑爹的ANDRODI STUDIO升级2.3之后导致databinding报错