- 博客(36)
- 收藏
- 关注
原创 【数据结构】二叉树:一场关于节点与遍历的艺术之旅
前面我们说过顺序存储结构一般只适用于完全二叉树,既然顺序存储适应性不强,我们既要考虑链式存储结构了。二叉树每个节点最多有两个孩子,所以为它设计一个数据域和两个指针域是比较自然的想法,我们称这样的链表为二叉链表。
2024-06-12 22:01:04 2135 55
原创 【数据结构】穿梭在二叉树的时间隧道:顺序存储的实现
之前我们谈过了树的存储结构,并且谈到了顺序存储结构对树这种一对多的关系结构实现起来还是比较困难的。但二叉树是一种特殊的树,由于二叉树的特殊性,使得它可以使用顺序存储结构来实现,二叉树的顺序存储结构就是使用一维数组存储二叉树中的节点,并且节点的存储位置,也就是数组的下标要能体现出来节点之间的逻辑关系
2024-06-04 22:12:09 3037 50
原创 【数据结构】二叉树:简约和复杂的交织之美
二叉树是n(n>=0)个节点的有限集合,该集合或者为空集合(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。在下面的图中,左边的就是一棵二叉树,而右边的因为它的F节点有3个子节点,所以它不是二叉树。
2024-06-01 22:00:08 2322 52
原创 【数据结构】探索树中的奇妙世界
之前我们一直谈的都是一对一的线性结构,可现实中,还是有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构—“树”,考虑它的各种特性,来解决我们在编程中遇到的相关问题。树是一种非线性的数据结构,它是由n(n>=0)个节点组成的一个具有层次关系的集合,把它叫做树是因为它看起来像是一棵倒挂的树,也就是说它根是向上的,叶子是向下的。
2024-05-29 21:48:39 3040 44
原创 【数据结构】数据结构中的隐藏玩法——栈与队列
栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈,栈又称为先进后出(Last In First Out)的线性表,简称LIFO结构。
2024-05-25 12:28:38 1370 54
原创 【数据结构】解密链表之旅(双链表篇)
对于单向链表,由于每个节点只存储了向后的指针,到了尾标志就停止了向后的操作,这样,某一节点就无法找到它的前驱节点,就像我们无法回到从前。
2024-05-20 21:42:07 2475 50
原创 【数据结构】解密链表之旅(单链表篇)
在上一篇博客中我们提到了线性表有两种存储方式,一种是顺序存储,一种是链式存储。线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。这就意味着,这些数据可以存在内存未被占用的任意位置。在之前的顺序结构中,每个数据元素只需要存储数据元素信息就可以了。现在链式结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址。链式存储结构相比于顺序存储结构的优势在于插入和删除操作的高效性。
2024-05-14 12:41:34 2311 51
原创 【数据结构】手把手带你玩转线性表
线性表,听名字我们就能感受到,是具有线一样性质的的表。举个鲜明的例子,当我们在上体育课时,一个班的人都排好队,每一排都有一个打头的,一个收尾的,每个人都知道自己前一个是谁,后面一个是谁,这样就如同一根线一样将他们串在了一起,这就可以称为线性表。线性表是数据结构中最基本的一种,它是由n(n>=0)个具有相同类型的元素组成的有限序列。具体来说,线性表由多个元素组成,每个元素都有一个唯一的前驱元素(除第一个元素外)和唯一的后继元素(除最后一个元素外)。
2024-05-10 22:07:26 1422 42
原创 【数据结构】初识数据结构
数据结构的学习者大多有这样的想法:数据结构很重要,一定要学好,但数据结构比较抽象,有些算法理解起来很困难,学的很累。我想让大家知道的是:数据结构非常有趣,很多算法是智慧的结晶,我希望大家在学习数据结构的过程是一种愉悦的心情感受。因此我开创了《数据结构》专栏,在这里我将把数据结构内容以有趣易懂的方式展现给大家。
2024-05-05 08:45:30 1478 29
原创 C语言趣味代码(五)
我想以此篇结束关于C语言的博客,因为在C语言拖得越久越不能给大家带来新的创作,在此我也相信大家对C语言已经有了一个新的认知。进入正题,在这一篇中我主要编一个“英语单词练习小程序”来给大家展开介绍,从测试版逐步改良,每一步详细讲解让大家能够对学过的知识再有一个全新的认知。
2024-04-30 20:48:50 1268 20
原创 C语言趣味代码(四)
这一篇主要编写几个打字练习的小程序,然后通过这些小程序的实现来回顾复习我们之前学过的知识,然后通过这写打字练习的小程序来提升我们的打字技术和编程技术。
2024-04-28 17:25:56 2622 19
原创 C语言趣味代码(三)
这一篇主要围绕写一个程序---寻找数字 来写,在这篇我会详细和大家介绍基本实现以及它的改良版,还有相关知识的拓展,干货绝对满满。
2024-04-24 18:08:31 2936 9
原创 C语言趣味代码(二)
珠玑妙算”是一个猜不重复的数字串的游戏,游戏的流程是:出题者根据答题者的推测给予提示,循环进行这种对话形式的处理,直到答题者猜对答案为止。出题者从0~9中选出4个数字,并将这4个数字排列成数字串作为题目。因为所有数字都不相同,所以不会出现“1123”这种出现重复数字的情况。下面是答案为“7615”时的游戏流程|:答题者(玩家)推测数字串,出题者(计算机)提示玩家该数字串中包含多少个答案数字,以及又有多少个数字位置是正确的。
2024-04-21 10:28:45 2097 2
原创 C语言趣味代码(一)
C语言相关知识点的博客和大家分享完了,接下来我想开始数据结构相关的博客,在此之前呢,有的小伙伴问过我学完C语言的相关知识,我能干些什么呢?只有刷题吗?这不禁让我反思:在我们学习的过程中,我们所有学习时用到的书籍都是围绕某一知识点介绍、拓展,千篇一律的示例代码,好像从没出现一些新颖的代码。所以我想用3篇左右的博客跟大家分享一下用我们学过的知识实现的有趣代码,然后再开始后面的数据结构的博客。
2024-04-17 18:24:33 2061 2
原创 C语言预处理操作详解
C语言设置了⼀些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATA__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义一起看下面的代码,我们来举个栗子:int main()return 0;#define MAX 100 //为MAX定义一个值。
2024-04-12 09:23:08 1195 3
原创 C语言中的动态内存管理
这篇博客和大家讲一讲C语言中的动态内存管理。在C语言中我们知道指针很重要,同样的自定义类型中的结构体和动态内存管理也很重要,数据结构是严格依赖这三块知识点的。
2024-01-24 14:40:06 1060 3
原创 C语言中自定义类型:结构体
本篇博客和大家分享一下自定义类型:结构体。这里我们先提一下类型,类型有内置类型(char、short、long、int等)和自定义类型,内置类型创造出来可以直接使用,C语言本身自带的一种类型,当自定义类型不能满足的时候,支持自定义一些类型(当然不是随便定义的):结构体、枚举、联合体。数组(一种相同类型的集合)其实也是一种自定义类型,前面博客已经写过了这里就不提了,接下来介绍自定义类型中的结构体:当我们描述一个人的年龄时会写 int age=10; 但当描述稍微复杂的类型时,直接使用内置类型时不行的,例如我们
2024-01-18 10:25:39 1027 1
原创 C语言中的内存函数
在上一篇的博客中和大家分享了字符串函数,这篇和大家分型一下C语言中的内存函数。它们是针对内存块的函数,不在乎内存中的数据。他们也需要string.h头文件。
2023-12-21 20:02:44 555 1
原创 万字深入理解C语言中的指针(3)
之前我们提到了指针数组,指针数组是一种数组,用来存放地址(指针),数组指针变量究竟是指针变量还是数组呢?它是指针变量。int * p;存放的是整形变量的地址,能够指向整形数据的指针。float * pf;存放的是浮点型变量的地址,能够指向浮点型数据的指针。那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。下面的代码那个是数组指针呢?p2是数组指针。解释一下:p先和 * 结合,说明p是⼀个指针变量变量,然后指着指向的是⼀个大小为10个整型的数组。
2023-10-22 15:52:28 215 1
原创 万字深入理解C语言中的指针(1)
这里和大家分享一下C语言中的精髓——指针,总有的人会觉得好难啊,放心,慢慢来,没有学不会的知识,大家不要觉得他有多可怕,不要给自己心理压力,认真学肯定是会学会的。那么我们就开始今天的博客之旅了。
2023-09-25 13:54:48 274 4
原创 函数递归经典例题(汉诺塔和青蛙跳台阶详解)
上一篇和大家分享了函数递归相关的知识,那么这一篇就和大家分享两个函数递归的经典例题:汉诺塔问题和青蛙跳台阶的问题。
2023-09-11 21:53:05 350 1
原创 函数的递归
递归是我们学习C语言函数绕不开的一个话题,那么什么是递归呢?递归是一种解决问题的方法,在C语言中,就是函数自己调用自己。//在这里main函数又调用了main函数return 0;上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问 题,代码最终也会陷⼊死递归,导致栈溢出。把一个大型复杂问题层层转化为一个与原类型相似,但规模较小的问题来求解,直到问题不能再被拆分了,递归就结束了,所以呢,递归就是把大事化小的过程。
2023-09-08 21:39:13 263 2
原创 C语言实现扫雷小游戏
游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是一个9*9的棋盘默认随机布置10个雷可以排查雷如果不是雷,显示周围(8格)有几个雷。如果是雷,游戏失败。把10个雷之外的所有格都排查干净,排雷成功,游戏结束。游戏界面排雷界面游戏失败界面。
2023-09-06 21:11:02 321 2
原创 C语言中的函数(2)
上一篇我们围绕着库函数、自定义函数、实参和形参展开了讲解,这一篇我们围绕着return语句、函数的嵌套和链式访问等几个方面进行讲解。
2023-08-24 12:41:17 372 2
原创 C语言练习之打印菱形
菱形我们分成上三角和下三角打印,我们定义一个·变量i分别打印上三角和下三角,i是从0开始的,上三角的行数为line,下三角的行数为line-1。上三角中:先输出空格在输出*,每行空格从上往下数一行少一个,每行中*以2*i+1的方式递增。下三角中:先输出*在输出空格,每行空格从上往下数一行多一个,每行中*按照(line-1-i)*2的方式减少。
2023-08-15 17:58:26 894
原创 C语言中的数组之二维数组
上一篇我们讲的数组被称为一维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称 为多维数组。整型、整形一维数组、整形二维数组。
2023-08-15 15:42:41 6360 7
原创 C语言中的数组(一维数组)
数组中存放的是一个或者多个数据,但数组元素个数不能为零。数组中存放的多个数据,类型是相同的。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。
2023-08-13 09:30:09 1565 1
原创 随机数的生成之猜数字游戏(详解)
游戏要求:1.电脑自动生成1到100的随机数2.玩家猜数字,玩家猜数字的过程中,根据猜测数据的大小给出反馈,直至猜对游戏结束。
2023-08-08 18:51:40 1255
原创 C语言中的分支循环语句(for,while,do...while篇)
⾸先执⾏ 表达式1 初始化循环变量,接下来就是执⾏ 表达式2 的判断部分, 表达式2 的结果如果 ==0,则循环结束;=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式 3 ,调整循环变量,然后再去 表达式2 的地⽅执⾏判断, 表达式2 的结果是否为0,决定循环是否继 续。=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
2023-07-28 19:03:55 401 2
原创 C语言中的分支循环语句(if,switch篇)
上⾯的代码排版,让 else 和第⼀个 if 语句对齐,让我们以为 else 是和第⼀个if匹配的,当 if 语句不成⽴的时候,⾃然想到的就是执⾏ else 子句,打印 haha ,但实际上 else 是和第⼆个 if 进⾏匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不 成⽴,嵌套 if 和 else 就没机会执⾏了,最终啥都不打印。(在C语言中0为假,非0为真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果不是0,则语句执⾏。
2023-07-24 20:44:43 677 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人