青岛大学_王卓老师【数据结构与算法】Week05_12_队列的类型定义_学习笔记

news/2024/7/5 2:21:05

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。

一方面用于学习记录与分享,

另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。

如有侵权,请留言作删文处理。

课程视频链接:

数据结构与算法基础–第05周12–3.5队列的表示和实现1–3.5.1队列的类型定义

📚 【Week05】12_队列的类型定义

队列相关术语

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

表尾即 a_n 端,称为队尾;表头即 a_1 端,称为队头

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

例如
在这里插入图片描述

插入元素称为入队;删除元素称为出队

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

队列的相关概念

(1) 定义

限定只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插

(2) 逻辑结构

与同线性表相同,仍为一对一关系。

(3) 存储结构

顺序队链队存储,但以循环顺序队列更常见。

(4) 运算规则

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

(5) 实现方式

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

队列的常见应用

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

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

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

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

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

队列的抽象数据类型定义

ADT Queue{
	数据对象: D={a_i | a_i ∈ ElemSet, i = 1, 2, ..., n, n ≥ 0)
	数据关系: R={<a_i-1, a_i> | a_i-1, a_i ∈ D, i=2, ..., n)
	约定其中 a_1 端为队列头, a_n端为队列尾
基本操作:
	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 返回值
	...还有将队列置空、遍历队列等操作...
}ADT Queue

队列的物理存储可以用顺序存储结构,也可用链式存储结构。

相应地,队列的存储方式也分为两种,即顺序队列链式队列

队列的顺序存储方式

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

// 最大队列长度
#define MAXQSIZE 100
Typedef struct{
    // 初始化的动态分配存储空间
    QElemType* base;
	// 头指针
    int front;
    // 尾指针
    int rear;
}SqQueue;

http://lihuaxi.xjx100.cn/news/1344012.html

相关文章

Linux系统编程(守护进程)

文章目录 前言一、守护进程概念二、空洞文件三、创建守护进程总结 前言 本篇文章我们来讲解守护进程&#xff0c;守护进程在进程中是一个比较重要的概念&#xff0c;在笔试面试中也经常考到&#xff0c;这篇文章就带大家来学习一下什么是守护进程。 一、守护进程概念 守护进…

吴恩达机器学习2022-Jupyter

1 可选实验室: Python、 NumPy 和矢量化 简要介绍本课程中使用的一些科学计算。特别是 NumPy 科学计算包及其与 python 的使用。 2 目标 在这个实验室里将回顾课程中使用的 NumPy 和 Python 的特性。 Python 是本课程中使用的编程语言。NumPy 库扩展了 python 的基本功能&a…

基于PyQt5的图形化界面开发——打砖块

目录 0. 前言1. 砖块类定义2. 挡板类定义3. 碰撞检测4. 小球和游戏初始化5. 完整代码6. 运行效果演示7. Pyinstaller 编译exe程序PyQt5 0. 前言 本文使用 PyQt5实现一个打砖块小游戏 操作系统&#xff1a;Windows10 专业版 开发环境&#xff1a;Pycahrm Comunity 2022.3 Pyt…

拖动排序功能的实现 - 使用HTML、CSS和JavaScript

引言 在现代Web应用程序中&#xff0c;拖动排序是一种常见的用户界面交互方式&#xff0c;它允许用户通过拖动元素来重新排列列表或项目的顺序。本文将介绍如何使用HTML、CSS和JavaScript来实现手动拖动排序功能。 一、HTML结构 首先&#xff0c;我们需要定义一个列表&#…

“AI in the Alps“:身体与精神的一场盛宴

作者&#xff1a;Christofer Dutz 得益于 Timecho 的组织和安排&#xff0c;我最近参加了一个精彩绝伦的活动 “AI in the Alps”&#xff0c;并从中收获颇丰。 这次活动是由德国工业界知名博客 “Industrial AI Podcast”&#xff08;http://aipod.de&#xff09;的组织者 Ro…

Vue3+Vite+Pinia+Naive后台管理系统搭建之八:构建 login.vue 登录页

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步Vue3.0 基础入门&#xff0c;快速入门。 项目所需要的图片&#xff0c;icon图标&#xff08;推荐&#xff1a;阿里巴巴矢量图标库&#xff09;自行获取&#xff0c;命名一致就行。 1. 构建 src/components/CopyRight.vu…

【每日一题】2673. 使二叉树所有路径值相等的最小代价

【每日一题】2673. 使二叉树所有路径值相等的最小代价 2673. 使二叉树所有路径值相等的最小代价题目描述解题思路 2673. 使二叉树所有路径值相等的最小代价 题目描述 给你一个整数 n 表示一棵 满二叉树 里面节点的数目&#xff0c;节点编号从 1 到 n 。根节点编号为 1 &#…

云计算的学习(六)

六、云计算的发展趋势 1.云计算相关领域介绍 1.1物联网 物联网来源于互联网&#xff0c;是万物互联的结果&#xff0c;是人和物、物和物之间产生通信和交互。 物联网主要技术&#xff1a; RFID技术&#xff08;射频识别技术&#xff09;传感器技术嵌入式系统技术 1.2大数据…