| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> leetcode622.设计循环队列(C语言) -> 正文阅读 |
|
[C++知识库]leetcode622.设计循环队列(C语言) |
目录 一、题目链接和介绍实现一个循环的队列,其特性队列的先进先出(FIFO)原则,队尾被连接在队首之后以形成一个循环,该题目即为实现其功能。 二、大体思路①创建一个大小为k+1的数组。使用head和tail两个变量来记录数组中数据的变化; ②存入数据时,tail指针向后移动;删除数据时,head指针向前移动。 ③因为要存放k个数据,我们开辟k+1的空间的目的就是防止存入数据时发生了覆盖,当tail+1==head时即表示队列存满。 三、具体步骤3.1 创建结构体 有一个head变量表示队列的头,tail表示队列的尾,k表示存入队列的大小,a开辟的数组。
3.2 队列的创建 因为结构体不好控制,而且下面题目的函数形参都是以结构体指针的形式传入,所以我们要初始创建时要使用结构体变量obj来控制。 又因为函数作用域的原因,所以我们创建该结构体时要使用malloc来开辟,这样函数销毁的时候我们创建的变量才不会被销毁,并且可以成功返回该结构体指针。
3.3 队列的插入 我们的思路是,将数据插入到?a[tail]?的位置,然后使?tail++?,这样就可以数据插入到队列中去。 这里有一个问题,因为我们是循环队列,如果出现这种情况: head因为删除数据导致前移,然后插入数据时tail走出了数组。 ?所以这时我们要判断,如果当tail==k+1时,我们就要让tail回归到对头。
3.4删除数据 想删除数据,只用将head向前移动一格即可。当然,也可能出现以下这种情况。 所以我们同样可以判断,当head==k+1时,我们将head移动到对头。
3.5?队列的判空 我们的思路是,队列初始状态下head和tail都存的是同一个下标,即head==tail==0,且我们规定了tail+1==head才是存满的,所以说只有当head和tail相等时队列才为空
3.6?队列的判满 以下我们有两种形式判定队列的为满的情况 ? 二:我们先来看第二种情况,设置一个临时变量temp为tail+1,如果tamp==head就表示队列当前为满返回true。 第一种情况,设置一个临时变量temp为tail+1,如果temp==k+1,将temp置为0,再判断tamp是否等于head,如果等于,就表示为满,返回true。 ?
3.7 队列头部数据 这就很简单了,直接返回head下标处的数据即可。
3.8 队列尾部数据 这里又分两种情况:①tail未被置0 ②tail被置零。 如果tail被置零,因为在程序的开始,我们就判断了队列是否为空,所以k位置处肯定是有数据的,我们直接返回k下标处的数据即可。 ? ?
3.9 队列的销毁 我们首先要释放数组a,再释放队列。
四、代码部分
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 15:20:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |