[数据结构] 队列的循环数组实现
来源:互联网 发布:matlab table转为矩阵 编辑:程序博客网 时间:2024/05/22 14:25
当用数组表示队列时,可以把数组看成是一个环形,即令数组中第一个单元紧跟在其最后一个单元之后。
当要插入一个新元素时,只需将指针Q->rear沿顺时针移动一个位置,然后把元素放入Q->rear所指的单元中;当要删除队列中的一个元素时,只需简单地把指针Q->front沿顺时针移动一个位置即可。因此,如果假定数组的长度为maxlength,则以maxlength为模来移动指针Q->rear和Q->front,即可实现队列上的插入和删除操作,并且执行这些操作所花的时间与队列的长度无关。
为了能够区分空队列和满队列,把Q->rear所指的单元比Q->front所指的单元滞后一个位置(沿顺时针方向)作为空队列状态;而把Q->rear所指的单元比Q->front所指的单元滞后两个位置(沿顺时针方向)作为满队列状态。
#include <iostream>using namespace std;#define maxlength 100typedef int element_type;typedef struct QUEUE{int front;int rear;element_type elements[maxlength];};int addone( int i )//将i的位置按模加1 {return ( (i+1) % maxlength );}void MakeNull(QUEUE *Q)//将队列置为空 {Q->front = 0;Q->rear = maxlength - 1;} //MakeNullbool Empty(QUEUE *Q)//测试队列是否为空 {if( addone(Q->rear) == Q->front ) return true;else return false; }//Emptyelement_type Front(QUEUE *Q)//返回队列Q的第一个元素 {if( Empty(Q) ) cout << "Queue is empty!" << endl; else return ( Q->elements[Q->front] ); }void EnQueue(element_type x,QUEUE *Q)//将元素x插入到队列Q的后端 {if( addone( addone(Q->rear) ) == Q->front ) cout << "Queue is full!" << endl; else { Q->rear = addone(Q->rear); Q->elements[Q->rear] = x; }} //EnQueuevoid DeQueue(QUEUE *Q)//删除队列Q的第一个元素 {if( Empty(Q) ) cout << "Queue is empty!" << endl; else Q->front = addone(Q->front);}int main(){QUEUE *Q; int m,n;MakeNull(Q); EnQueue(1,Q); EnQueue(2,Q);m = Front(Q);cout << m << endl;DeQueue(Q);n = Front(Q);cout << n << endl;return 0;}
0 0
- [数据结构] 队列的循环数组实现
- 【C++数据结构】数组循环队列的实现
- 数据结构-循环数组实现队列
- 数据结构 -- 队列 & 循环队列 -- 数组实现
- 数据结构代码实现(循环队列的实现,数组)
- 数据结构(java语言描述)-- 队列的循环数组实现
- 数据结构之——基于数组实现的循环队列
- 数据结构:队列(循环数组实现)
- 数据结构之循环数组实现队列
- 数据结构(一) -- 循环队列数组实现
- 循环队列的数组实现
- 循环队列的数组实现!!
- 循环数组队列的实现
- 队列的数组实现(循环队列)
- 【数据结构】队列-数组的实现
- 数据结构之队列(设计并实现一个自己的队列:循环数组+扩容策略)
- 简单数据结构的实现之循环队列
- 数据结构的C实现_循环队列
- c++中冒号和双冒号的用法
- jvm调优总结
- LeetCode:Best Time to Buy and Sell Stock
- at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 报空指针
- 嘴角定位
- [数据结构] 队列的循环数组实现
- setAliasTexParameters抗锯齿
- 20141119 【 Arduino - DHT11 - 单片机 】 利用单片机数码管 显示 DHT11温湿度
- 分解条件表达式
- java32为md5加密
- [译]信仰是如何毁掉程序员的How religion destroys programmers
- 【exp】11g新特性——exp不导出空表
- 3D数学 ---- 矩阵的更多知识(1)
- 要排毒吗?