自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 c++实现B树(下)

(如果有小可爱对B树还不是很了解的话,可以先看完上一篇blog,再来看小吉的这篇blog)。那这一篇主要讲的是B树中删除操作的实现。在看小吉的数据结构与算法(c++实现)系列博客中,各位小可爱们应该能发现,其实在实现一个数据结构时,删除操作普遍比新增操作要难。小吉浅浅预告一下B树的删除操作可以说是天花板级别的难。但是各位小可爱们不要怕,跟着小吉的博客看下去B树删除易如反掌(哈哈,夸张了🤣)

2024-11-13 19:33:19 1236 1

原创 c++实现B树(上)

哈喽啊!好久不见,甚是想念!失踪人口要回归了,时隔一个多月小吉我终于要更新blog了🎉。在停更的一个多月中,小吉也有在好好学习提升自己,立志给大家呈现好文章。现在让我们进入正题吧,今天我们这篇blog主要讲用c++实现B树,上一篇blog讲的是二叉搜索树,中间还有avl树和红黑树小吉还没有把博客写出来。希望大家多多关注小吉,在完成这篇blog后,小吉将会出avl树实现的博客(浅浅期待一下吧)。老规矩,在正式实现B树之前,我们先来了解了解什么是B树。

2024-08-15 17:20:55 1016 1

原创 c++实现二叉搜索树(下)

好久不见啊,baby们,小吉我又回归了,发完这一篇小吉将会有两周时间不会更新blog了(sorry),在小吉没有发blog的日子里大家也要好好学习数据结构与算法哦,还有就是别忘了小吉我❤️这篇博客是二叉搜索树系列的最后一篇了,(提前预告一下)难度也相对于前几篇来说比较简单(前提是前几篇的知识大家都熟练掌握了)。好了,又说了这么多的废话,现在我们进入正题二叉搜索树(范围查询)实现大纲myless——找小于key(键值)的所有实值mygreater——找大于key(键值)的所有实值。

2024-06-18 22:41:27 625

原创 c++实现二叉搜索树(中)

小吉我今天更新了,惊不惊喜,意不意外,更新频率非常好(棒棒的)。小吉计划把二叉搜索树的知识更新完(预计在这几天更完),然后会有一段时间停更,因为小吉我要准备期末考试(几周时间速成🤪),玩归玩,闹归闹,绝对不能挂科!也祝大家期末考试门门过💪言归正传,接下来就要进入我们今天的学习了,上一篇blog讲到put(存储键值和对应的实值)这个方法,这篇blog主要讲二叉搜索树的前任后任和删除操作,浅浅预告一下,这篇blog讲解的内容会有一些难🫣实现大纲:predecessor——查找键值的前任(即前驱节点)

2024-06-14 16:28:22 775

原创 c++实现二叉搜索树(上)

二叉搜索树1.树节点增加key属性,用来比较谁大谁小,key不可以重复2.对于任意一个节点,它的key比左子树的key都大,同时也比右子树的key都小善解人意的小吉猜很多小可爱们看到这些概念都很难一下子就理解了,接下来小吉画一张图,方便大家理解(比起上面👆的概念,小吉认为下面的图比较重要)注:标的数值都是键值最后,小吉来考考你们🧐,看看你们是否是真的了解了二叉搜索树,上图👆键值6的右子树的取值范围(>6&&

2024-06-12 20:44:27 1097 1

原创 二叉树遍历之深度优先遍历

哈哈哈,小吉我又回归了!!!(欢迎欢迎),书接上回,这篇blog是讲二叉树遍历之深度优先遍历。在用代码实现深度优先遍历之前,我们先来了解了解什么是深度优先遍历(上波概念~)。

2024-05-31 20:16:50 1166

原创 二叉树的遍历之广度优先遍历

二叉树的定义:二叉树中每个节点至多只有两个孩子(可以只有一个孩子或者是没有孩子),二叉树的起始节点称为根节点,没有子节点的节点称为叶子节点二叉树的存储方式:树节点类和数组存储有可能有些小伙伴不知道树节点类,其实是非常简单的,小吉在这就不做过多的讲解,直接上代码public:TreeNode(int val):_val(val),_left(nullptr),_right(nullptr) {}//初始化列表private:int _val;

2024-05-28 20:00:12 526

原创 堆排序算法

​啊哈哈,没想到吧,小吉最近更的这么频繁,这篇是继上一篇c++实现堆的连续,趁热打铁把堆排序算法给大家讲讲接下来就进入我们的正题,在实现堆排序算法之前,我先讲讲堆排序的算法思路。

2024-05-27 14:20:51 322

原创 c++实现堆

hello,各位baby🤗们,好久不见,甚是想念!好了,不多说废话了,接下来进入我们今天的学习今天我们要学的是堆,使用自定义的方式实现堆。在实现堆之前,我们先来了解一下什么是堆堆是什么先上一波概念,在计算机科学中,堆是一种基于数的数据结构,通常用完全二叉树来实现。(完全二叉树是除最后一层外,其他层都是填满的,当然最后一层填满的也是完全二叉树。完全二叉树添加新节点时必须要靠左添加!有可能概念不是那么好懂,接下来看一张图就能明白了。

2024-05-25 21:41:39 599

原创 c++实现队列(数组)

紧接上一篇博客,这篇博客是关于数组实现队列的

2024-04-28 18:45:35 600

原创 c++实现队列(链表)

在实现队列之前,我们先上一波队列的概念🤪在计算机科学中 ,队列(queue)是以顺序的方式维护的一组数据集合,在一端添加数据,从另一端移除数据,习惯来说,添加的一端称为尾,移除的一端称为头。(可以把队列想象成生活中排队买商品)

2024-04-28 18:45:04 499

原创 c++实现汉诺塔

大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。🔮通过移动我们发现,当圆盘数为n的时候,要移动第n个圆盘,我们要依赖前面n-1个圆盘移动。👆这是汉诺塔移动过程的主要代码实现(注意要以引用的方式作为函数形参)1️⃣过程一:圆盘1,2从柱子a借助柱子c移动到柱子b。3️⃣过程三:圆盘1,2从柱子b借助柱子a移动到柱子c。2️⃣过程二:圆盘3从柱子a移动到柱子c。好了,现在思路🌟有了开始代码的实现。

2024-04-10 21:21:31 1379 1

原创 c++实现单向链表

单向链表属于链表中的一类,链表是用于数据元素的线性集合,其中每个元素都指向下一个元素,元素存储上并不连续。单向链表的特性是每个元素只知道其下一个元素是谁。

2024-03-26 21:07:09 1434

原创 c++知识总结之深拷贝和浅拷贝

->由于类对象p1和p2都要释放同一片内存空间,p2先释放m_height的空间,其空间不存在,当p1再去释放m_height这块内存空间时,已经找不到了,导致程序崩掉。改动后的代码输出无误,能够正常输出,但是存在问题,我们只用new在堆区开辟了内存,但是我们用完并未用delete释放掉。添加一个类属性(整形指针变量m_height),用new开辟到堆区,把由new开辟的地址存到m_height,---->浅拷贝的文字说明很简单,但是理解却不够直接,我们直接上代码。如有错,还望给位大大指出❤️❤️❤️。

2024-03-15 11:05:16 426 1

原创 C++入门学习之构造函数调用规则

这篇blog主要讲一下c++中类与对象中的对象特性中的构造函数的调用规则(这话有点小绕🫠,说白了就是类与对象---对象特性---构造函数的调用规则)学了大半个学期的C语言,现在进入到c++语言的学习中,分享一下最近刚学的构造函数调用规则(其实并不难,就是有点绕),让小吉我给大家捋捋👀。好了,构造函数调用规则就总结完了,下面提供调用规则二和调用规则三的速记法👇👇👇。将Person的无参构造和有参构造的代码给注释掉。将Person的无参构造和拷贝构造的代码给注释掉。啊,好久都没发blog了,回归一下🥳🥳🥳。

2024-01-30 11:33:23 350 1

原创 C语言leetcode刷题之在排序数组中查找元素的第一个和最后一个位置

必须设计并实现时间复杂都为。在回到题干,我们要找到第一个位置和最后一个位置,这说明我们很可能要用两次二分查找(好吧,其实就是要用两次),一次找到第一个位置,一次找到最后一个位置。前面一连出了几篇知识点整理的blog,今天这篇主要是对题的讲解,分享一道最近在leetcode上刷到的题🍉。(如果有不清楚二分查找的小可爱们🫠,可以去看我之前的blog,有详细讲解二分查找)最后,祝大家在新的一年开开心心,顺顺利利,学有所成❤️❤️❤️❄️☃️⛄。现在我们可以尝试开始敲代码了🏋️‍♀️🏋️‍♀️🏋️‍♀️。

2024-01-02 17:34:24 475 2

原创 C语言之整数和浮点数在内存中的存储

IEEE754规定在计算机内部保存M时,默认这个数第一位总是1,因此可以被舍去,只保存后面#####(例如011)的部分,等读取的时候再把第一位的1加上去---->👍好处是节省了一位有效数字。

2023-12-19 14:59:05 412

原创 C语言小知识之结构体内存对齐

这又是一篇知识点梳理的blog🫨,那又避免不了有些枯燥🤔,但是尽量用比较容易理解的方式来讲解,如有不足,还望各位海涵🌹🌹🌹。

2023-12-10 11:25:17 476 1

原创 C语言知识汇总之C语言内存函数

🍹这是一篇纯知识点梳理和讲解的blog,或许会有些枯燥,但是里面的内容很有用👍,本人尽量用容易理解的方式来讲解,如有不足,还望多多包涵🌹🌹🌹。

2023-12-03 14:34:57 465 1

原创 C语言初级之二分查找

(用一个生活中的事来举例🌰🌰🌰)当我们猜测一杯奶茶🧋的价格时,假设这杯奶茶的真实价格不超过30¥,我们一般会先猜一个中间数字,比如15¥,这种就是二分查找。在一个升序数组中如果要找一个数,我们采用二分查找,从中间开始找,没找的话,缩小范围,再从小范围的中间开始查找(其实C语言中的二分查找类似数学中的二分法)--->同样的方法循环直到找到11,如果当left>right时还没找到就是找不到了。使用二分查找在一个升序的数组中查找指定的数字n,如果找到打印这个数的下标。

2023-11-29 19:45:49 437 1

原创 C语言初级经典例题之打印“水仙花数”

求出0~10000000之间的所有"水仙花数"并输出,“水仙花数”是指一个n位数,其各位数字的n次方之和等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”想要赞👍,如果能点个关注那就再好不过了🤗🥰🫶🫶🫰。1)要产生0~10000000之间的数。5)每一位次方根的总和与原数进行比较。🤔其实此“水仙花数”非彼水仙花数。小白不懂事,如有错还望指出😘😘😘。4)通过库函数pow来求次方根。2)确定产生数的位数。

2023-11-26 17:35:43 389 1

原创 C语言实现字符串左旋

当time为2的情况下(相当于左旋2个字符),str+i就是从c开始将cdef拷贝到tmp中,再从字符串数组str中追加2个字符到tmp中,此时tmp中就是cdefab,最后将tmp中的字符拷贝到str中。左旋一次:把a放在临时变量tmp中,把bcdef分别往前放,最后的位置空出来把tmp临时变量中的a放进去。-->涉及的字符串函数:strcpy,strncat。例如:abcdef左旋一个字符得到bcdefa。:实现一个函数,可以左旋字符串中的k个字符。

2023-11-26 15:10:27 446 1

原创 C语言实现字符串逆序

数组名就是数组首元素的地址,left的指针中存的就是字符串数组首元素的地址,right的指针中存的就是字符串最后一个元素的地址,解引用left和right得到字符再进行交换,实现字符串的逆置。题目:将一个字符串str的内容颠倒过来,并输出。输出描述:输出逆序的字符串。1)gets是C语言的库函数,在vs2019和vs2022的系统上,觉得gets不安全,要用gets_s(str,10000),否则会报错。🎇字符串逆置的扩展:字符串的左旋/右旋(可以尝试一下,题目oj网有)小白不懂事,如有错还望指出🥰。

2023-11-21 14:43:18 249 1

原创 C语言经典例题之喝汽水问题

分析:5块钱先买5瓶汽水,可以喝5瓶汽水,剩下5个空瓶子,5个空瓶子除以2可以喝2瓶汽水,2瓶汽水除以2可以喝1瓶汽水,剩下1个空瓶子和5瓶汽水除以2余下的空瓶子数结合,再喝1瓶汽水,剩下一个空瓶子,没法再换汽水了->当空瓶子为1时就不能再喝了(循环跳出条件)。这里提供一种思路🎇:对空瓶子数进行递推,然后加上n元换得n瓶汽水。题干:喝汽水,1瓶汽水1元,2个空瓶可以换1瓶汽水,给20元可以喝几瓶汽水?这样这道题就变成了纯找规律的题了(瞬间拉低这道题的档次😐)采用函数递推的方法(这种方法比较难想到)

2023-11-15 21:06:31 270

原创 C语言初级经典例题(打印菱形)

下半部分(和上半部分一样把行号、*的数量、空格数写出来,然后再找行号和*的数量的关系,行号和空格数的关系。🧐疑点解答(为什么第0行是6个空格,而不是12个空格):就是6个空格后面打印一个*,打印完*后面的空格控制台自动生成。题目突破口:将菱形分为上下两个部分进行打印,上半部分有7行,下半部分有6行。*的数量=(总行数-行号-1)*2-1,空格数=行号+1。:如何正确的表示出随着行号的改变,*的数量是如何变化的。*的数量=行号*2+1,空格数=总行数-行号-1。小白不懂事,如有错还望指出🥰。

2023-11-15 19:27:17 93

原创 C语言分支+循环知识汇总

🟦C语言中存在三种结构:顺序结构、选择结构、循环结构分支语句:if(else)、switch(case)循环语句:while、for、do while🍇下面来详细介绍各个语句的语法和注意事项🍇⚠️注意:1)if语句后只能控制一条语句,要控制多条语句应用{}2)else与离它最近的if进行匹配->常用于多分支的情况->switch语句中搭配break使用才能实现真正的分支(break语句的实现效果是把语句列表划分为不同的部分)

2023-10-26 16:16:27 74 1

原创 C语言小知识——判断数的大小

2~3个数判断大小推荐使用:条件操作符(相比分支语句更简洁)应用知识:三目操作符(条件操作符)或分支语句简单介绍一下条件操作符:exp1?exp2:exp3 max=(a>b?a:b);表达式的结果如果为真,a就要被执行,结果赋值给max;否则b要被执行,结果赋值给max。例题:输入三个数,输出最大值多个数判断大小应用知识:循环语句(for)和分支语句(if)例题:输入10个整数,输出10个整数的最大值如有不对的地方,还望指正🥰❤️❤️❤️

2023-10-21 15:41:46 562 1

原创 C语言小知识——多组输入

题干:多组输入,一个整数(1~100),表示线段长度,即“*”的数量。针对每行输入,输出占一行,用“*”组成的对应长度的线段。就是多组输入的一种书写形式,个人推荐在不知道要输入几组数据时使用。2)ctrl+z理论上用一次就可以了,但在vs2019和vs2020版本上要使用三次(ctrl+z+回车三次就可以结束)多组输入是在输入一组数据后,程序不会结束,还可以继续接受另一组数据进行输入。注意:vs上不能输入EOF来结束,vs并不认为结束。1)ctrl+c直接中断。

2023-10-19 13:46:16 780 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除