当前位置:网站首页>队列的存储和循环队列
队列的存储和循环队列
2022-04-23 03:07:00 【夜深人静码代码】
一、队列的存储结构
1、队列的物理存储可以用顺序存储结构,也可用链式存储结构。相应队列的存储方式也分为两种,即顺序队列和链式队列。
2、顺序队列可以用一维数组表示如下:
#define MAXQSIZE 100 //最大队列长度
Typedef struct {
QElemType *base; //初始化的动态分配存储空间
int front; //头指针
int rear; //尾指针
}SqQueue;
二、循环队列的基本操作语句
1、队列的初始:front=rear=0;
2、元素入队:base[rear]=x; rear++;
3、元素出队:x=base[front];front++;
4、空队标志:front==rear;
5、队满标志:为了防止队满标志和队空标志一样,则会少用一个元素空间,即队列空间大小为m时,有m-1个元素就认为是队满。这样判断队空的条件不变,即当头、尾指针的值相同时,则认为队空;而当尾指针在循环意义上加1后是等于头指针,则认为队满。因此,在循环队列中队满的条件是:(rear+1)%MAXQSIZE==front。
三、顺序队列的假上溢
1、定义:系统作为队列用的数组存储区还没有满,但队列却发生了溢出,我们把这种现象称为"假溢出"。
2、原因:由于元素入队时头指针前移和元素出队时尾指针也是前移,当头指针超出向量空间,这时整个向量空间及队列并没有满却产生了"上溢"现象。
3、解决方法:将队空间设想成一个循环的表,即分配给队列的m个存储单元可以循环使用,当rear为maxqsize时, 若向量的开始端空着,又可从头使用空着的空间。当front为maxqsize时 ,也是一样。
四、循环对列
1、循环队列的存储方式:base[0]接在base[MAXQSIZE -1]之后,若rear+1==M, 则令rear=0;
2、循环队列插入元素和删除
①插入元素: Q.base[Q.rear]=x;
Q.rear= (Q.rear+ 1)% MAXQSIZE;
②删除元素: x= Q.base[s.front]
Q.front=(Q.front+ 1)% MAXQSIZE
版权声明
本文为[夜深人静码代码]所创,转载请带上原文链接,感谢
https://blog.csdn.net/kxbdys/article/details/123943905
边栏推荐
- Openfeign service call
- Maui initial experience: Cool
- Recommend reading | share the trader's book list and ask famous experts for trading advice. The trading is wonderful
- Service avalanche effect
- PID debugging of coding motor (speed loop | position loop | follow)
- C#语法糖空合并运算符【??】和空合并赋值运算符【 ??=】
- Due to 3 ²+ four ²= five ², Therefore, we call '3,4,5' as the number of Pythagorean shares, and find the array of all Pythagorean shares within n (including n).
- c#语法糖模式匹配【switch 表达式】
- C syntax sugar empty merge operator [?] And null merge assignment operator [? =]
- TP5 customization in extend directory succeeded and failed. Return information
猜你喜欢
be based on. NETCORE development blog project starblog - (1) why do you need to write your own blog?
Impact of AOT and single file release on program performance
荐读 | 分享交易员的书单,向名家请教交易之道,交易精彩无比
REINFORCE
2022T电梯修理考试模拟100题及在线模拟考试
ASP. Net 6 middleware series - execution sequence
准备一个月去参加ACM,是一种什么体验?
Blazor University (11) component - replace attributes of subcomponents
C# 11 的这个新特性,我愿称之最强!
Ningde's position in the times is not guaranteed?
随机推荐
tf. keras. layers. MaxPooling? D function
利用栈的回溯来解决“文件的最长绝对路径”问题
TP5 inherits base and uses the variables in base
c#可变参数params的介绍
Service avalanche effect
ASP.NET 6 中间件系列 - 自定义中间件类
Small companies don't make formal offers
[format] simple output (2)
編碼電機PID調試(速度環|比特置環|跟隨)
LNMP MySQL allows remote access
Maui initial experience: Cool
svg标签中利用<polygon/>循环数组绘制多边形
Recommend reading | share the trader's book list and ask famous experts for trading advice. The trading is wonderful
[ncnn] - the meaning of - 23300 in param
FileNotFoundError: [Errno 2] No such file or directory
Basic SQL (VIII) data update operation practice
Laravel8- use JWT
2022年度Top9的任务管理系统
Openfeign service call
Use of metagroup object tuple in C