C语言,数据结构学习区
菜鸟写的C语言,数据结构.学习笔记.记录自己的小总结.
小志biubiu
区块链工程专业-大学牲
展开
-
C语言程序编译与链接的奥秘
通过预处理、编译、汇编和链接这四个阶段,我们可以将人类可读的源代码转化为机器可执行的二进制代码。本文将结合《程序员的自我修养》一书的内容,深入剖析C语言程序的编译和链接过程,并通过图解的方式,帮助大家巩固上课所学。目标文件包含了程序的二进制表示,但还不是一个完整的可执行文件,因为它还缺少一些必要的信息,如函数和变量的地址。编译器(如GCC中的cc1)会检查源代码的语法和语义,并生成对应的汇编指令。静态链接会将所有需要的库文件和目标文件合并成一个单独的可执行文件,而动态链接则会在运行时加载所需的库文件。原创 2024-03-29 13:52:09 · 210 阅读 · 1 评论 -
链表+环-链表是否有环的判断
在数据结构中,链表是一种常见的数据结构,它允许我们在不需要预先知道数据总量的情况下进行数据的动态存储。然而,由于链表的特性,有时我们可能会遇到链表中出现环的情况,即链表的某个节点指向了链表中它之前的一个节点,形成了一个闭环。原创 2024-05-07 15:05:53 · 430 阅读 · 0 评论 -
C语言_打印回型矩阵BC133
我刚做这个题思路是对的,但是逻辑混乱,回型矩阵每行每列各用各的变量,写的乱七八糟.这题入手就像卷饼一样,从外面一层一层向中心逼近,,打印逻辑如下。通过定义上下左右来框限位置,向中心靠近,.代码如下。原创 2024-02-27 22:39:58 · 160 阅读 · 0 评论 -
C语言-数据在内存中的存储(整数)(浮点数)(大小端字节序)
在补码表示中,最高位为符号位,如果最高位是0,则表示为正数,如果最高位是1,则表示为负数。整数在内存中的存储方式可以使用有符号整数和无符号整数的表示方式。无符号整数的存储方式也可以使用二进制补码来表示,但是在实际应用中,常常使用直接存储的方式。一般来说,浮点数的存储方式与整数的存储方式类似,都遵循大端字节序或小端字节序。通过查看内存中的某个浮点数变量的字节序,可以判断浮点数的存储方式。在计算机的内存中,整数是以二进制的形式存储的。字节序是指数据在内存中的存储顺序,也就是高位字节和低位字节的存储顺序。原创 2024-03-19 18:10:57 · 659 阅读 · 1 评论 -
二叉树及其在C语言中的实现A
本文介绍了二叉树的基本概念、特性以及在C语言中的实现方式。通过定义二叉树节点的结构体,我们可以轻松地实现二叉树的插入、遍历等操作。二叉树作为数据结构的重要组成部分,对于理解树形结构、递归算法等方面都有着重要意义。更多实现在另一篇文章,希望能够帮助读者更好地掌握二叉树的相关知识。原创 2024-06-01 23:49:10 · 407 阅读 · 0 评论 -
C语言-结构体:内存对齐与变量创建
本文将介绍结构体的基本概念、结构体变量的创建和初始化,并重点讨论结构体中的内存对齐问题。例如,假设我们有一个包含char、int和float的结构体,尽管这些类型的实际大小分别是1字节、4字节和4字节,但由于内存对齐,结构体的总大小可能会超过这些值之和。需要注意的是,不同的编译器和平台可能有不同的内存对齐策略,因此在实际编程中,我们需要了解目标平台的内存模型,以写出高效且可移植的代码。在结构体中,成员变量在内存中的排列并不是简单地按照声明的顺序紧密排列的,而是会考虑内存对齐的问题。的偏移量成为4的倍数。原创 2024-03-20 16:43:41 · 277 阅读 · 1 评论 -
二叉树遍历与操作的C语言实现B
二叉树的前序、中序、后序遍历,节点个数、叶子节点个数、第k层节点个数、查找值为x的节点、判断是否为完全二叉树、深度计算、层序遍历以及二叉树的销毁原创 2024-06-01 23:47:04 · 384 阅读 · 0 评论 -
成为CSDN创作者第128天:我的收获与C语言技术成长之旅
通过与他们的互动,我不仅拓宽了视野,也对自己的技术定位有了更清晰的认识。在掌握基础知识的基础上,我开始学习C语言的进阶技能,如指针、文件操作、内存管理等。这段时间里,我不仅在平台上结识了许多志同道合的朋友,更在C语言的技术道路上取得了长足的进步。然而,我深知技术之路永无止境,未来我将继续努力学习,不断提升自己的技能水平。这些活动不仅让我收获了宝贵的知识,更让我感受到了社区的温暖和活力。在CSDN的这段时间里,我深入学习了C语言的相关知识,并在实践中不断提升自己的技能。二、C语言技术的成长。原创 2024-03-26 15:58:48 · 124 阅读 · 0 评论 -
C语言-链表实现贪吃蛇控制台游戏
贪吃蛇游戏是一个经典的游戏,它的玩法简单而富有挑战性。在这个博客中,我将分享如何使用C语言和链表数据结构来自主实现贪吃蛇游戏。我会详细介绍游戏的设计思路、编码过程、遇到的问题及解决方案,并分享我的心得体会。通过编写贪吃蛇游戏,我深入了解了链表数据结构的操作和应用,提高了自己的编程能力。在解决问题的过程中,我体会到了编程的乐趣和挑战性。通过这个项目,我不仅提高了自己的编程能力,还加深了对链表数据结构的理解。食物生成:随机生成食物的位置,并检查是否与蛇身重叠。游戏逻辑:贪吃蛇的移动、食物的生成、碰撞检测等。原创 2024-05-04 00:21:47 · 755 阅读 · 0 评论 -
C语言结课总结与示例代码
建议同学们在学习C语言时,不仅要注重理论知识的掌握,更要多动手实践,通过编写代码来加深理解。同时,也要善于利用网络资源,如CSDN博客、GitHub等,学习他人的优秀代码和经验,不断提高自己的编程能力。经过一学期的学习,我们终于完成了C语言的学习旅程。C语言作为计算机编程的基石,为我们后续学习更高级的语言和深入理解计算机内部机制打下了坚实的基础。在这里,我想对这学期的学习进行一下总结,并通过一些示例代码来回顾我们学过的知识。字符串的处理(strlen、strcpy、strcat等)结构体的定义与初始化。原创 2024-05-04 00:34:20 · 401 阅读 · 0 评论 -
C语言中的循环队列与栈、队列之间的转换实现
在数据结构的学习中,栈(Stack)和队列(Queue)是两个非常重要的概念。队列是一种先进先出(FIFO)的数据结构,只允许在两端进行操作,一端为队头(front),另一端为队尾(rear)。栈是一种后进先出(LIFO)的数据结构,只允许在一端进行操作,这一端被称为栈顶(top)。虽然栈是后进先出的数据结构,但我们可以通过两个栈(一个作为输入栈,一个作为输出栈)来模拟队列的先进先出特性。队列是先进先出的数据结构,但通过两个队列(或者一个队列和一个辅助栈)也可以模拟栈的后进先出特性。原创 2024-05-14 19:45:09 · 441 阅读 · 1 评论 -
C语言-整数与浮点数:内存存储的差异
了解整数和浮点数在内存中的存储机制是理解计算机如何处理这些数据的基础。整数主要使用二进制补码形式表示,而浮点数则遵循IEEE 754标准,使用符号位、指数位和尾数位来表示。这些表示方式各有优缺点,因此在编写涉及这些数据类型的代码时,我们需要根据具体需求来选择最合适的数据类型和处理方法。原创 2024-03-19 18:28:35 · 721 阅读 · 1 评论 -
C语言指针初学
通过掌握和理解这些知识点,我们可以更好地利用指针来编写高效和灵活的代码。写代码就好比修桥补路, 有时需要借助指针来引路, 通过一些经验, 我们可以更好地利用指针来编写高效和健壮的代码。野指针则指向一个未知的地址或已经释放的内存空间,使用野指针可能会导致程序的崩溃或产生未定义的行为。数组名本身就是一个指向数组首元素的指针,可以通过指针来对数组进行遍历和操作。常见的指针运算包括指针的加法和减法,以及指针与整数之间的相互转换。指针的指针是指指向指针的指针变量。我们可以通过指针来访问和修改其所指向的变量的值。原创 2024-03-10 17:39:21 · 179 阅读 · 1 评论 -
数据结构--排序--C语言
在元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换,在剩余的array[i]–array[n-2](array[i+1]–array[n-1])集合中,重复上述步骤,直到集合剩余1个元素。特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。原创 2024-08-24 15:55:49 · 459 阅读 · 0 评论 -
C语言中的文件与文件操作入门
在C语言中,文件是一个存储在外部介质(如硬盘)上的数据集合,它可以包含文本、图像、音频等各种类型的数据。C语言提供了多种文件操作函数,用于打开文件、读取文件内容、写入数据到文件以及关闭文件等。在C语言中,文件操作是一个非常重要的部分,它允许程序与外部数据进行交互,如读取文本文件、写入数据到文件等。通过上面的介绍和示例代码,相信初学者已经对C语言中的文件和文件操作有了一定的了解。这些函数提供了对文件进行基本操作的能力,初学者可以通过这些函数学习并实践C语言中的文件操作。函数用于打开文件,并返回一个文件指针。原创 2024-03-29 13:48:10 · 1187 阅读 · 1 评论 -
C语言函数调用和数组错误总结
在这过程中我也有个小错误,比如混淆了下标和值,导致运行出错.下面这种,明明是下标缩小范围,我把它写成arr[mid],变成数值没法缩小范围. (错误示范)当时写的二分法查数组位置,用函数调用二分法,给大家看一下我的错误调用方式,我直接把定义的函数名整体粘贴复制用,后来改了也是带着int 哈哈. (错误示范)但正确的方式下面是用赋值方式将所有元素赋值为0,来实现要求.,而且满足函数的 高内聚 ,低耦合 ,用int sz来求数组长,再去传数值, 应用函数再调用.正确写法如下,这样调用才正确.原创 2023-12-20 22:52:35 · 464 阅读 · 6 评论 -
C语言-扫雷游戏逻辑实现
统计周围雷数,省事,直接函数返回值,,,这个算法是通过ascll码值来实现的,因为字符012345数字的ascll码值是依次增加,无雷是'0',雷是'1'只要取一个位置周围八个字符的所有ascll的和减去八个'0'的ascll码值就可计算排查位置周围有多少个雷.初始化棋盘和打印棋盘函数,初始化就是用'0'铺满设计棋盘,用'*'铺满展示棋盘,考虑到后续排查雷数要周围数组位置,所以设计时让所需棋盘大一圈,实现计算雷数,打印棋盘就是所需棋盘所以少了一圈,打印时加上横纵轴,便于玩家输入坐标排雷或标记。原创 2024-01-09 12:17:54 · 531 阅读 · 2 评论 -
C语言递归初学问题反思
就是这里,本意是返回值,不知道当时这么想要写这个,现在想不起来它的作用了,反正就是他一直循环干扰了正常结果,本身递归就是沿着条件一层层深入进去,递推进去,还要回归出来,按逻辑肯定要一层层带出来这个else后的返回值,所以返回值干扰了正确结果. 我是调试发现的.调试的时候发现逐语句在最后那个return上走了好几遍,我还看了好几遍,好一会才反应过来,哈哈.刚刚写了个递归和迭代求n位斐波那契数列数,出现个没理解逻辑的错误,话不多说上代码。分别用递归和迭代实现,迭代好理解就是循环嘛,递归错误如下。原创 2024-01-23 22:32:53 · 483 阅读 · 1 评论 -
C语言分支循环语句
逻辑操作符用于组合布尔表达式。在上面的代码中,当i等于5时,程序执行到Break语句,跳出循环并输出"Loop exited at i = 5"。在上面的代码中,当i为偶数时,程序执行到Continue语句,跳过当前循环的剩余部分并开始下一次循环。在上面的代码中,当i小于等于10时,循环体会反复执行,累加i的值并将i递增。在上面的代码中,首先将i初始化为1,然后当i小于等于10时,执行循环体打印i的值并将i递增。for循环是一种先执行一次循环初始化,再根据指定的条件执行循环体,最后进行循环更新的循环结构。原创 2023-12-07 17:53:26 · 1131 阅读 · 1 评论 -
C语言数组错误总结(数组)
首先数组问题,由于没学过倒序插入法,只知道大概意思(就是送后边一次比较大小换位放在合适的地方) 下面是错误示范,只想着比较后插入,然后把整个数组扩大,位置向后推,特别笨哈哈.经过老师指导,了解这个实现方法是把数组一开始就加进去,然后依次和前一位比大小,向前移,下面是正确方式,一下子茅塞顿开.关于C语言函数调用这块儿不是很熟练,特别是数组和函数调用,最近疯狂掉坑,给大家总结一下我进过的坑有哪些.原创 2023-12-20 22:20:05 · 600 阅读 · 1 评论