青岛大学_王卓老师【数据结构与算法】Week05_14_队列的顺序表示和实现2_学习笔记

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

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

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

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

课程视频链接:

数据结构与算法基础–第05周14–3.5队列的表示和实现3–3.5.2队列的顺序表示和实现2

📚 【Week05】14_队列的顺序表示和实现2

循环队列的类型定义

// 最大队列长度
#define MAXQSIZE 100
Typedef struct{
    // 初始化的动态分配存储空间
    QElemType* base;
	// 头指针,若队列不空,则指向队列头元素
    int front;
    // 尾指针,若队列不空,则指向队尾元素的下一个位置
    int rear;
}SqQueue;

循环队列的操作

循环队列的初始化
Status InitQueue(SqQueue& Q){
    // 分配数组空间
    Q.base = new QElemType[MAXSIZE];
    // Q.base = (QElemType*)
    // malloc(MAXQSIZE* sizeof(QElemType));
    if(!Q.base)
        // 存储分配失败
        exit(OVERFLOW);
    // 头指针尾指针置为 0,队列为空
    Q.front = Q.rear = 0;
    
    return OK;    
}
求循环队列的长度

在这里插入图片描述

int QueueLength(SqQueue Q){
	reurn ((Q.rear - Q.front + MAXSIZE)%MAXQSIZE);
}
循环队列的入队
Status EnQueue(SqQueue& Q, QElemType e){
    if((Q.rear + 1)%MAXQSIZE == Q.front)
        // 栈满
        return ERROR;
    // 新元素加入队尾
    Q.base[Q.rear] = e;
    // 队尾指针 + 1
    Q.rear = (Q.rear + 1)% MAXQSIZE;
    
    return OK;
}
循环队列的出队
Status DeQueue(SqQueue& Q, QElemType& e){
    if(Q.front == Q.rear)
        // 栈空
        return ERROR;
    // 保存队头元素
    e = Q.base[Q.front];
    // 队头指针 + 1
    Q.front = (Q.front + 1)% MAXQSIZE;
    
    return OK;
}
取循环队列队头元素
Status GetHead(SqQueue Q){
	// 队列不为空
	if(Q.front != Q.rear)
        // 返回队头指针元素的值,队头指针不变
    	return Q.base[Q.front];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/41816.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于ELM-Adaboost极限学…

Java线程相关

线程优先级 在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线程构建的时候可以通过setPriority(int)方法来修改优先级,默认优先级是5,优先级高的线程分配时间片的数量要多于优先级低的…

【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念

目录 一、为什么要做 CI/CD ? 1.1 背景-传统的应用开发发布模式 问题 1.2 持续集成与持续交付 持续集成(CI) 持续交付(CD) 持续部署(CD) 1.3 CI/CD 的价值体现 1.4 推荐常用的 CI/CD 工…

Linux内核结构与特性简介

系统调用接口:位于最上层,实现了一些基本的功能,如read和write等系统调用。这是用户空间程序与内核交互的接口,提供了对内核功能的访问。 内核代码:位于系统调用接口之下,可以看作是独立于体系结构的通用内…

linux之Ubuntu系列(四)用户管理 用户和权限 chmod 超级用户root, R、W、X、T、S 软链接和硬链接 shell

r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。 w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移…

基于单片机快递柜的设计与实现

功能介绍 以51单片机作为主控系统;液晶显示当前信息,最多可存储几十个;按下存储按键液晶显示当前快递柜剩余数量;继电器打开,表示用来放物品;正次按下存储按键将取消存快递,继电器关闭快递柜可用…

Spark编程-使用SparkCore求TopN,Max_Min_Value

简介 使用SparkCore求top5值编程,最大最小值 求订单前五的TOP5值 数据 数据字段如下:orderid,userid,payment,productid 需求如下:从文本文件中读取数据,并计算出前5个payment(订单的付款金额)值 //字段 orderid,userid,payme…

在 3ds Max 中对二战球形炮塔进行建模

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 实际上被称为“斯佩里球炮塔”,它被用于二战的B-17和B-24轰炸机。 本教程介绍如何在 3ds Max 中对球形转塔进行建模。建模时,您将使用背景图片作为辅助。首先创建一个低多边形球体。…

视频融合平台EasyCVR登录后通道数据及菜单栏页面显示异常的排查与解决

EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 有用…

Windows11 C盘瘦身

1.符号链接 将大文件夹移动到其他盘,创建成符号链接 2.修改Android Studio路径设置 1.SDK路径 2.Gradle路径 3.模拟器路径 设置环境变量 ANDROID_SDK_HOME

存量市场下,雅迪的高端化之路举步维艰?

为了让自家的高端产品成功“突围”,雅迪在营销上无所不用其极。 继在央视大楼高调发布后,近日雅迪冠能探索E10完成了力战70吨游艇、无惧24吨雨水冲刷、制霸百公里全地形等极限挑战,“树立起新一代两轮电动车豪华标杆旗舰”。 图源&#xff1…

字节跳动后端面试,笔试部分

var code "7022f444-ded0-477c-9afe-26812ca8e7cb" 背景 笔者在刷B站的时候,看到了一个关于面试的实录,前半段是八股文,后半段是笔试部分,感觉笔试部分的题目还是挺有意思的,特此记录一下。 笔试部分 问…

Jmeter性能测试,通过插件监控服务器资源使用情况

Jmeter作为性能测试的首选工具,那么在性能测试过程中如何方便快捷的监测服务器资源使用情况? 可以通过jmeter 安装"PerfMon(Servers Performance Monitoting)"插件并配合服务端资源监控工具进行实现,详细操作流程如下:…

【微信机器人开发

现在并没有长期免费的微信群机器人,很多都是前期免费试用,后期进行收费,或者核心功能需要付费使用的。 这时如果需要群机器人帮助我们管理群聊,建议大家使有条件的可以自己开发微信管理系统。了解微信群机器人的朋友都知道&#x…

教程 | 如何10秒内一键生成高质量PPT

Hi! 大家好,我是赤辰! 近期新进的学员不少职场小白,对AI工具提效办公很感兴趣,今天火速给大家安排,ChatGPTMindShow强强联合,30秒内快速生成PPT,对于策划小白来说简直是福音呀! 市…

第三方api对接怎么做?淘宝1688api接口怎么对接?

在今天的互联网上,第三方API对接是必不可少的。这种技术将不同的应用程序/服务连接在一起,创造了无限的可能性。 第三方api对接怎么做? 1、与支付公司签约 首先,通过正规的渠道,如支付公司官网或正规服务商&#xf…

Echarts 修改背景颜色、全屏自适应屏幕

修改背景色: 全屏自适应屏幕 首先拿到外面的div的高度 通过DOM获取clientHeight即为无论全屏与否都是DIV的整个高度 在通过高度去做自适应就好了

Redis可视化工具(Redis Desktop Manager)

redis是我们平时开发工作中经常用到的非关系型数据库,常用于做数据缓存,分布式锁等。 为了更方便的使用redi,这里给大家推荐一款可视化工具:Redis Desktop Manager。 1.下载与安装 直接到gihub下载,地址 Release 0.…

搭建Redis主从集群和哨兵

说明:单机的Redis存在许多的问题,如数据丢失问题、高并发问题、故障恢复问题、海量数据的存储能力问题,针对这四个问题,对应解决方式有:数据持久化(参考:http://t.csdn.cn/SSyBi)、搭…

Stable Diffusion学习笔记

一些零散笔记 批量化生产的时候推荐提高生成批次,不建议提高每批数量 灰常好的模型网站 LiblibAI哩布哩布AI-中国领先原创AI模型分享社区 出图效率倍增!47个高质量的 Stable Diffusion 常用模型推荐 - 优设网 - 学设计上优设 关键词Prompt顺序 画质…