- 博客(36)
- 收藏
- 关注
原创 【数据结构】快速排序详解(递归版本)
下面是递归展开图:我们可以从上面的递归展开图看到,我们每次在区间内排出好key的位置,然后再在key的左右区间进行递归,再次排出key的位置,再分成两个子区间,
2024-09-17 14:12:05 924 10
原创 【数据结构】排序
3、我们将待排序序列中的第一个元素【44】,插入到有序序列中。①待排序元素【44】和有序序列中元素【3】进行比较,【44】比【3】大则直接插入到有序序列中。②此时有序序列为【3,44】,待排序序列为【38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48】
2024-09-16 23:33:58 798 3
原创 【数据结构】二叉树链式结构的实现
以链式结构实现二叉树,即使用类似链表的方式,将数据存放于一个节点中,该节点的指针域存放指向左孩子和右孩子节点的指针。//定义二叉树节点//存放的数据//指向左孩子的指针//指向右孩子的指针}BTNode;1.2本期博客,我们学习了二叉树链式结构相关功能的实现,如遍历、统计节点个数、查找、销毁等。这些功能的实现加深了我们对递归的理解,并且让我们学会了使用数据结构作为辅助来解决问题。如果你觉得博主讲的还不错对你有帮助的话,给我的博客留个赞和关注,后期不断给大家讲解新的知识。
2024-09-03 20:25:54 875 4
原创 【数据结构】堆主要的应用场景
将无序序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆将堆顶元素与末尾元素交换,将最大元素“沉”到数组末端重新调整结构使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序同学们可以先感受一下,后期讲到《排序》章节时会带大家实现堆排序代码的实现。本期博客,我们讲解了堆的两个主要的应用场景,希望帮助大家更加理解堆这种特殊的完全二叉树。希望这篇文章能给予你学习中一些帮助,如果有疑问的,欢迎在评论区与我讨论交流哦~
2024-08-24 13:54:27 917 3
原创 【数据结构】循环队列
顺序队列在使用过程中容易出现虚假的满状态, 为了解决这个问题,就产生了一个较巧妙的方法,将顺序队列臆造为一个环状的空间,称之为循环队列。循环队列中指针和队列元素之间的关系不变,我们只需要利用模运算就可以很容易实现指针的循环移动。但是循环队列中存在一个问题,在循环队列中只凭头指针front等于尾指针rear无法判别队列空间是“空”还是“满”,可有两种处理方法:其一是另设一个标志位以区别队列是“空”还是“满”;
2024-08-21 20:03:45 1200 4
原创 【数据结构】二叉树基础知识
🌟节点的度:一个节点含有的子树的个数称为该节点的度;如上图:A的为6🌟叶节点或终端节点:度为0的节点称为叶节点;如上图:B、C、H、I...等节点为叶节点非终端节点或分支节点:度不为0的节点;如上图:D、E、F、G...等节点为分支节点🌟双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;如上图:A是B的父节点🌟孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;如上图:B是A的孩子节点兄弟节点:具有相同父节点的节点互称为兄弟节点;如上图:B、C是兄弟节点树的度。
2024-08-21 12:21:45 1244 3
原创 【数据结构】栈的实现
在之前的博客中我们已经详细讲解了 顺序表、单链表的实现。每一种不同的数据结构都有它独特的结构和应用之处,今天将再次给大家介绍一个新的线性表:栈。栈在数据结构中又代表了什么呢?我们一起进入正题!
2024-08-17 00:30:13 966 4
原创 【数据结构】链表
链表的基本结构由节点组成,每个节点包含数据和指向下⼀个节点的指针。我们就可以定义这样的一个结构int data;//存储的数据//后继节点}SLTNode;typedef关键字在这里用于为结构体定义一个新的类型名Node这使得在后续的代码中,可以直接使用Node来声明该结构体类型的变量,而无需再使用这种较为繁琐的形式。
2024-08-13 16:26:52 1114 6
原创 【数据结构】 顺序表的应用 - 通讯录的实现
联系人信息至少应该包含:名字、性别、年龄、电话、地址等由于顺序表的底层就是数组,所以我们就是要利用数组来实现如以下所示的结构在通讯录中由于我们要存储的是多个联系人的信息,因此要定义一个结构体来存储联系人的信息以下定义结构体struct PersonInfo来存储联系人的信息,并且使用typedef将该结构体重命名为Info并且在PersonInfo中姓名,性别,电话,住址每个数组的大小可以用#define来定义。//通讯录数据类型//通讯录数据类型int age;}Info;基于。
2024-08-12 02:19:45 888 3
原创 【数据结构】顺序表实现
动态顺序表//存储数据的底层结构//记录顺序表的空间大小int size;//记录顺序表当前有效的数据个数}SL;为了后续好修改类型数据,我们可以使用typedef将结构体类型重新命名为SL。在后续对顺序表操作中,为了用户更好的输入数据,一般我们会将输入数据的数据类型重命名为SLDataType。采用typedef将其数据类型int重命名为SLDataType。
2024-08-09 01:15:06 789 2
原创 【C语言】动态内存管理
C/C++程序,对于内存分配了如下几个区域:这里我们简单了解一下:1. 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。2. 堆区(heap):⼀般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。分配⽅式类似于链表。3. 数据段(静态区)(static)存放全局变量、静态数据。
2024-08-07 23:38:44 979 3
原创 【C语言】数组与指针常见笔试题讲解(2)
二维数组中的每个元素都是连续存放的。好了,当我们介绍了这些预备知识后,那我们就开始讲解一下二位数组和指针相关的笔试题吧~这里我们通过讲解二维数组和指针相关笔试题,请大家再次注意以下知识点的巩固:1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址,它的类型是一个数组指针类型。3.除了上面两个例子外,其余的数组名都表示数组首元素的地址。3. 指针运算笔试题解析接下来我们将给大家讲解7道关于指针运算的笔试题。
2024-08-07 00:49:02 849
原创 【C语言】数组与指针常见笔试题讲解(1)
1.多个字符来初始化一个字符数组的。这里面是没有\0。2.一个字符串来初始一个数组的情况,这里面的字符串是包括了\0。3.一个字符指针来指向一个常量字符串的情况,它里面虽然是有\0,但是p不是一个数组空间,它是一个变量空间,这个变量存放着p的地址。另外,这里只是讲一部分的数组和指针的笔试题,还有一部分的笔试题留到下次的博客再讲解~对于本次博客的内容,有疑问,不懂的地方,欢迎大家在评论区和我交流~本期博客就讲到这里,下期再见~🫶。
2024-08-06 01:41:05 892
原创 【C语言】qsort函数的介绍和使用
2.1 qsort 函数原型下面是 qsort 函数的参数说明base:指向待排数组的第一个元素的指针。num:base指向的待排数组中元素的个数。size:base指向的待排数组中每个元素的大小,以字节为单位。compar:函数指针,指向的就是两个元素的比较函数,该函数用于确定排序的顺序。qsort 是 C 语言中一个强大且灵活的排序库函数。通过提供自定义的比较函数,我们可以对各种数据类型的数组进行排序。掌握 qsort 的用法,可以让我们的编程工作更加高效。
2024-08-05 21:42:25 628 1
原创 【C语言】深入理解指针
在指针的类型中我们知道有⼀种指针类型为字符指针 char*;这就是我们对指针基本的操作。取地址以及解引用操作。同学不禁会有疑问:这里是把字符串 hello bit 放到字符指针 p ⾥吗?我们仔细想想,很显然是放不下的因为“hello bit.” 这个字符串一共有 11 个字符。分别是:h、e、l、l、o、空格 、b、i、t、. 还有一个字符串结束标志\0,总共占11个字节。而一个指针变量32位4个字节,64位8个字节。很显然是放不下的。其实本质是把字符串 hello bit.。
2024-08-01 21:20:30 382 2
原创 【C 语言】深入理解冒泡排序算法
冒泡排序是一种经典且基础的排序算法。它虽然在效率上并非最优,但对于初学者理解排序的基本概念和逻辑有着重要的意义。
2024-07-30 22:25:29 995 2
原创 【C语言】指针之数组传参那些事
在上⼀期博客中,我们用代码实现过使⽤指针访问数组的内容这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试。输出结果:我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址我们再来看一个代码,测试结果是:40,单位是字节这时候有同学会有疑问?数组名如果是数组⾸元素的地址的话,sizeof(arr)不是求的是地址的大小,不应该是4/8才对吗?
2024-07-29 01:36:25 1046 2
原创 【C语言】指针基础知识理解
在讲内存和地址之前,我们想有个⽣活中的案例:有了,你的朋友就可以通过房间号快速的找房间,找到你。如果把上⾯的例⼦对照到计算机中,⼜是怎么样呢?我们知道计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何⾼效的管理呢?其实也是把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。那什么是字节呢?这里给大家补充一个知识点:计算机中常⻅的单位。
2024-07-28 02:08:39 710 3
原创 【C语言】函数递归
递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数自己调自己。我们知道main函数是主函数,所以main函数自己调用自己其实就是一个简单的递归上述就是⼀个简单的递归程序,只不过上面的递归只是为了演示递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow)。把大事化小“递归” 这个词中的 递 就是递推的意思,归 就是回归的意思,接下来慢慢体会。
2024-07-27 15:27:41 978 1
原创 【C语言】VS的实用调试技巧
bug,在英文中的意思是 “昆虫” 或 “虫子” ,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或问题,简称程序漏洞。比如程序修复,杀毒等我们经常听到过这个词。“Bug” 这个词的创始⼈格蕾丝·赫柏(Grace Murray Hopper),她是⼀位为美国海军⼯作的电脑专家, 1947年9⽉9⽇,格蕾丝·赫柏对Harvard Mark II设置好17000个继电器进⾏编程后,技术⼈员正在进⾏整机运⾏时,它突然停⽌了⼯作。
2024-07-26 22:22:06 812 1
原创 【C语言】操作符详解
struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯⼀的计算路径,那这个表达式就是存在潜在⻛险的,建议不要写出特别负责的表达式。至此,C语言操作符我们就都有清晰的认识啦!本篇整理内容较多,希望对大家熟练掌握,练习!对大家C语言学习有很大帮助!完。
2024-07-25 14:56:11 981 2
原创 【C语言】函数
了解了库函数,我们更加重视⾃定义函数,⾃定义函数其实更加重要,能为程序员写代码更多的创造性。⼀般我们在使⽤函数的时候,直接将函数写出来就使⽤了。⽐如:我们要写⼀个函数判断⼀年是否是闰年。上⾯代码中绿色框出的部分是函数的定义,红色框出的部分是函数的调⽤。
2024-07-24 19:57:24 1054
原创 【C语言】数组
C语言中,我们可以创建一个变量,用来存储数据,但如果我们想存储多个数据时,怎么办呢?我们就可以使用来存储多个数据。接下来我们来一起学习 数组 这一节课吧!
2024-07-24 15:03:50 1185 1
原创 【C语言】分支与循环(下)
我们怎么想这个问题呢?1. 要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环产生100~200的数字2. 怎么判断i是否为素数呢?我们可以使用试除法,也就是可以用 2 ~ i-1 之间的数字去试除i,那首先需要产⽣2~i-1之间的数字,也可以使⽤循环解决。3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。
2024-07-24 12:35:46 909
原创 【C语言】分支和循环(上)
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。在C语言中,我们就可以使⽤实现分⽀结构,使⽤实现循环结构。这期博客先来看看 分支结构中的if switch语句。
2024-07-24 02:02:09 700 1
原创 【C语言】数据类型和变量
C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。下⾯盘点⼀下C语⾔提供的各种数据类型,本章节主要探讨内置数据类型。
2024-07-23 23:34:32 897
原创 【C语言】预处理指令#include
0.前言include是一个计算机专业术语,我们在C/C++程序经常会包含头文件命令,用于将指定头文件嵌入源文件中#include叫做文件包含命令,用来引入对应的头文件(.h文件)。#include 也是预处理命令的一种。
2024-03-27 16:43:43 2278 6
原创 C语言文件操作——判断文件是否结束
在《文件操作》章节中,我们介绍过一系列的与文件的顺序读写有关的函数,它们调用成功与失败时的返回值各不相同,为了能更好地记忆这些函数,我们将这些函数的返回值进行了总结,并列入表格:这样一一列举出来后,看似已经非常清楚明了,实际却还有一些小细节:1. fgetc函数返回EOF时,可能是读取数据时发生错误,也可能是已经读取到文件末尾了。2. fgets函数返回NULL时,可能是读取数据时发生错误,也可能是已经读取到文件末尾了。
2024-03-04 20:45:54 1798 2
原创 【C语言】扫雷游戏(逻辑与代码实现)
扫雷游戏是一款经典的游戏,相信大家都玩过这个游戏,简单介绍一下,扫雷游戏的规则很简单,就是在9x9【初级】,16x16【中级】,或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个)。由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。如果玩家翻开的方块有地雷,则游戏结束。
2024-01-22 22:04:35 1773 5
原创 【C语言进阶】字符串+内存函数的介绍
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串 中或者 字符数组 中。字符串常量 适用于那些对它不做修改的字符串函数。
2023-10-26 17:25:30 104 3
原创 【C语言进阶】自定义类型:结构体、枚举、联合体
/struct - 结构体关键字//tag - 结构体标签struct tagmemlist//成员列表}variable-list//变量列表;位段的声明和结构体是类似的,1️⃣位段的成员必须是int或signed int2️⃣位段的成员名后边有一个冒号和一个数字struct Sint _a:2;int _b:5;int _c:10;int _d:30;❗位段比特变量a存储于2个比特位里变量b存储于5个比特位里。
2023-10-07 11:23:50 223 6
原创 【C语言进阶】数据的存储
此处要用到rand()函数,rand()函数为电脑获取随机的一个大于0的整数,因为电脑选择的坐标范围是0~2,需要x=rand()%3来实现,因为任意一个整数对3取余数,就只有0,1,2的可能,那随机获取1至100呢,就是rand()%99+1啦。一个小小的三子棋也可以让我们坐下来几小时的研究,几百行的代码,当然这都很简单,可想在以后我们去写大型项目的代码将是巨大量的,所以我们要脚踏实地,一步一个脚印,每次代码都写到自己能写到的最好程度,不负所望!实现玩家下棋,电脑下棋,以及判断胜负的功能。
2023-07-25 22:51:05 130 4
原创 全新的开始----个人第一篇博客
我将合理分配时间,周一到周五考虑到学校晚上上晚自习,所以我会在学校在上一些没用的课程的时候,学习或复习相关知识,40~50分钟,周六周日放松的时间比较充裕,可以早上/下午利用1~2h学习编程,并对一周学习的知识进行一个很好的消化,并且养成敲代码的好习惯,创建自己的Gitee仓库,一步一个脚印,让绿点成为努力的痕迹。其次呢,根据自己的心之所向,选择C++/Java方向,确定自己更精通哪种,这种就是我要精通的语言啦!另外,还需要熟悉操作系统,数据库,数据结构等知识,对计算机的配置有个全新的认识。
2023-06-10 18:04:29 120 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人