ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

队列的类型定义

2021-10-07 21:31:59  阅读:234  来源: 互联网

标签:队尾 存储 队头 队列 元素 类型定义 操作


队列示意图:

队头(Front)离开

队尾(Rear)进入

队列(Queue)是仅能在表耳我进行插入操作,在表头进行删除操作的线性表。

表尾即 an 端,称为队尾;

表头即 a1 端,称为队头。

它是一种先进先出(FIFO)的线性表

 

 

插入元素称为“入队”;

删除元素称为“出队”。

队列的存储结构为链队或顺序队(常用循环顺序队)

队列的相关概念:

① 定义:只能在标的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插)

② 逻辑结构:同线性表相同,仍为一对一关系

③ 存储结构:顺序队或链队,以循环顺序队列更常见

④ 运算规则:只能在队首和队尾运算,且访问结点时依照先进先出(FIFO)的原则

⑤ 实现方式:关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同。

 

队列常见应用:

① 脱机打印输出:按申请的先后顺序依次输出

② 多用户系统中,多个用户排成队,分时地循环使用 CPU 和 主存

③ 按用户的优先级排成多个队,每个优先级一个队列

④ 实时控制系统中,信号按接收的先后顺序依次处理

⑤ 网络电文传输,按到达的时间先后顺序依次进行

凡是在使用有限资源时,有多个想要使用此资源都需要排队,而在排队时都需要用到队列。

 

队列的抽象数据及类型定义:

① 数据对象:D = {ai | ai ∈ ElemSet, i = 1,2,3,4....,n, n ≥ 0}

② 数据关系:R = {<ai-1 , ai> | ai-1 , ai ∈ D , i = 2,....,n}  约定 a1 端为队列头,an 端为队列尾

③ 基本操作:

                    InitQueue(&Q) 操作结果:构造空队列 Q

                    DestroyQueue(&Q) 条件:队列 Q 已存在;操作结果:队列 Q 被销毁

                    ClearQueue(&Q) 条件:队列 Q 已存在;操作结果:将 Q 清空

                    QueueLength(Q) 条件:队列 Q 已存在;操作结果:返回 Q 的元素个数,即队列长度

                    GetHead(Q,&e) 条件:Q 为非空队列;操作结果:用 e 返回 Q 的队头元素

                    EnQueue(&Q, e) 条件:队列Q已存在;操作结果:插入元素 e 为 Q 的队尾元素

                    DeQueue(&Q, e) 条件:Q为非空队列;操作结果:删除 Q 的队头元素,用 e 返回值

 

队列的物理存储可以用顺序存储结构,也可以用链式存储结构。相应的,队列的存储方式分为两种,即顺序队列和链式队列

队列的顺序表示——用一维数组 base [MAXQSIZE]

#define MAXQSIZE 100 //最大队列长度,如果有需要可以修改这个值
Typedef struct{
    //看一下要存储的是什么类型,就把 QElemType 进行对应修改
    //比如要存储 int 型,就把 QElemType 更换为 int 
    QElemType *base; //初始化的动态分配存储空间

    // front 和 rear 称作指针,却不是指针变量,用以表示下标
    int front; //头指针,队头元素的下标
    int rear; //尾指针,队尾元素的下标
}SqQueue;

 

标签:队尾,存储,队头,队列,元素,类型定义,操作
来源: https://www.cnblogs.com/AronKeener/p/15377146.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有