自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C学习(数据结构)-->双向链表

链表的分类,一共有(单向 / 双向) x(带头 / 不带头)x(循环 / 循环)<=>2x2x2 = 8(种)本文章主要讲述双向循环带头链表。

2024-07-18 09:03:17 446

原创 C学习(数据结构)-->单链表习题

当 N 为奇数时,(x+1)*C一定为奇数,即 C 为奇数,不存在step1中 N为奇数,C为偶数 的情况,则两指针一定会相遇。设慢指针为 slow ,快指针为 fast ,头结点到入环点的长度为 L,环的长度为 C ,则当 slow 到达入环点时,从 fast 到达 slow 的长度为 N ,则。此时变为追击问题,快指针一次走两步,慢指针一次走一步,没走一步,快慢指针之间的距离减一,即:N,N-1,N-2,N-3......3,2,1,0,两指针相遇。取快指针一次两步,慢指针一次一步,可得方程式。

2024-07-17 16:04:54 636

原创 C学习(数据结构)->单链表

pcur 获取头结点地址,通过 pcur 打印当前结点保存的数据。然后将当前结点保存的,下一结点的地址赋值给 pcur ,通过 pcur 继续往下打印。链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。当需要寻找到下一个结点时,只需要通过当前结点保存的 next 地址寻找到下一个结点。与顺序表不同的是,保存每一个数据都需要单独申请空间,每一个申请下来的空间称为结点。结点由要 保存的数据 和 下一个结点的地址 两部分组成。

2024-07-16 08:49:12 248

原创 C学习(数据结构)-->顺序表

顺序表空间不够时,插入数据一次就调用 realloc 函数扩容一次,当要插入数据增多时,就会浪费跟多的时间,时间复杂度会大大增加,所以使用倍数地扩容空间,多余的空间忽略不计。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般采用数组存储,对数组封装,实现了常用的增删查改等接口。线性表是n个具有相同特性的数据元素的有限序列,是在实际中广泛应用的数据结构。缺点:空间给少了不够用,给多又会造成空间浪费。静态顺序表是使用定长数组存储元素的顺序表。顺序表分为静态顺序表和动态顺序表。

2024-07-12 07:00:00 738

原创 C学习(数据结构)-->算法复杂度

在计算机科学中,算法的时间复杂度是一个函数式 T( N ) ,定量描述了算法的运行时间。时间复杂度是衡量程序的时间效率,而不是去计算程序的运行时间,因为在不同的环境下同一个程序的运行时间不同,且时间只能写好后测试,不能在写程序前进行理论上的思想计算评估。空间复杂度指的是对一个算法在运行中因为算法需要额外临时开辟的空间。空间复杂度计算规则基本和时间复杂度类似,也使用大O渐近表示法。

2024-07-11 11:08:24 461

原创 C语言学习—编译和链接

语义分析器对表达式的语法分析后进行的语义的静态分析。汇编器将汇编代码转变成机器指令,一个汇编语句对应一个机器指令,根据汇编指令和机器指令的对照表一一进行翻译,不做指令优化。扫描器对源程序进行词法分析,把代码中的字符分割成一系列的记号,即关键字、标识符、字面量、特殊字符等。将一堆文件链接在一起生成可执行程序,链接用于解决一个项目中多文件、多模块之间互相调用的问题。语法分析器度扫描产生的记号进行语法分析,产生以表达式为节点的语法数。在预处理阶段,源文件和头文件会被处理成 .i 为后缀的文件。

2024-06-10 03:30:04 373

原创 c语言学习—文件操作

程序文件和数据文件程序文件程序文件包括源程序文件(后缀为 .c ),目标文件(windows环境后缀为 .obj),可执行程序(windows环境后缀为 .exe)数据文件文件的内容不一定是程序,而是程序运行时读写的数据。

2024-06-09 18:31:09 957

原创 C语言学习—结构体

对齐数最大的是 int 类型的 b ,对齐数为 4 ,从上面来看结构体目前申请的内存为 9 个字节,不是 4 的整数倍,还要在扩大到 12 个字节,才是该结构体的总大小。第三个结构体成员 c 占 5 个比特位,空间不够取,所以假设原先剩余的那一个比特位的空间直接浪费,再向内存申请一个字节的空间,把 c 放进去。创建结构体变量时,为本身申请内存空间的同时,又为结构体变量内部的结构体变量申请空间,无限地申请空间下去,这样的变量是无穷大的。结构是值的集合,这些值称为成员变量,成员变量类型可以不同。

2024-05-25 23:36:43 773

原创 C语言学习—俄罗斯方块

define row 28 //游戏行数#define col 18 //游戏列数#define ROW row+2 //游戏方框行数,包括提示区等#define COL col+12 //游戏方框列数,包括提示区等//将方块旋转保存在dia中i < 4;i++)j < 4;j++)#define row 28 //游戏行数#define col 18 //游戏列数#define ROW row+2 //游戏方框行数,包括提示区和分数区。

2024-05-23 15:44:07 1256 1

原创 C语言学习—数据在内存中的储存

在计算机中,整形数据是用补码来储存的,因为CPU中只有加法器,而补码可以使加减法统一处理,而且补码和原码相互转换(负数是先对补码除符号位外的其他位进行按位取反,然后给反转后的数加1)的过程是相同的,不需要添加额外的硬件。对于64位的浮点数,最高的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。对于32位的浮点数,最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。

2024-05-22 23:33:00 624 1

原创 C语言学习—内存函数

从source的位置开始向后复制num个字节的数据到destination指向的内存位置,且遇到 ' \0 ' 不会停下来,不支持source和destination重叠。

2024-05-19 19:43:37 221 1

原创 C语言学习—字符和字符串函数

与strcpy的区别是它不会在目标字符串后面追加 ' \0 ' ,且它可以指定复制多少个字符,如果复制的字符多于源字符串字符数的话,会在后面用0作补充。该函数可以比较字符串大小,比较方法是将两个字符串的每一个同一位置上的字符的ASCLL码值比较,若大于返回大于0的数字,等于返回,小于返回小于0的数字。与strcat的区别是可以将指定字符个数最加到目标字符串末尾,并且追加 ' \0 '。字符串以 ' \0 ' 作为将结束标志,strlen会返回在 ' \0 ' 之前的字符个数,但不包括 ' \0 '

2024-05-19 19:42:52 846 1

原创 C语言学习—指针(4)

把函数指针作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。库函数<stdlib.h>的 " qsort " 函数就是回调函数的典型例子。例:修改在《C语言学习—指针(3)》的加减乘除计算机的代码。qsort函数是用来排序数据的,任何数据都可以关于它的使用。通过冒泡排序模拟qsort。

2024-05-11 23:38:26 303 1

原创 C语言学习—指针(3)

目录一、字符指针变量二、数组指针变量三、二维数组传参四、函数指针变量五、函数指针变量的使用六、typedef关键字1、将 " unsigned int " 重命名2、指针类型重命名3、数组指针和函数指针重命名七、函数指针数组1、定义:2、用途在指针类型中,,有一种指针是字符指针例:同时,字符指针还有另一种用法例:代码运行结果:看起来是把整个字符串存放在字符指针里,其实是把首字符 ' h ' 的地址存放在该字符指针里。而且,与字符数组不同,这样的字符串是无法修改的,所以保存这样的字符串不需要申请额

2024-05-11 23:38:05 376 1

原创 C语言学习—指针(2)

虽然 a 和 &a 的地址相同,但各种操作的时候,一个一次操作4个字节,一个一次操作40个字节。通过冒泡排序将一个无序的数组调整为升序,即两个相邻的元素相互比较,小的排前,大的排后。既然数组名就是地址,很容易就可以明白,对数组进行操作的其实是通过地址去进行操作。指针变量也是变量,也是有地址的,所以存放指针变量的地址的指针就是二级指针。数组名本身就是个地址,且在普遍情况下,数组名的地址是数组首元素的地址。数组是地址,传参也是把地址传过去,然后函数通过地址去操作。两个sizeof都是计算的一整个数组的字节。

2024-05-11 23:37:18 272 1

原创 C语言学习—指针(1)

这是因为指针p的类型为short*类型的,每次只能访问两个字节,for循环对数组中内容进行修改时,一次访问的是:a[0]的低两个字节,a[0]的高两个字节,a[1]的低两个字节,a[1]的高两个字节。指针变量的大小和类型是无关的,指针变量的大小和所处的平台有关,在32位的平台下指针变量的大小为4个字节,而在64位的平台下的指针变量的大小为8个字节;但是因为传址调用中,函数调用的是地址,所以是可以间接修改其它函数中的变量的。数组在内存中是连续存放的,只要知道数组第一个元素地址,后面的都可以知道。

2024-05-11 23:37:08 687 1

原创 C语言学习—扫雷游戏:递归实现范围展开

扫雷游戏通过递归实现范围展开

2024-04-27 19:01:53 272 1

原创 C语言学习—扫雷游戏(尝试)

尝试用C语言实现扫雷游戏

2024-04-19 23:07:56 900

原创 C语言学习—分支与循环

C语言学习笔记—分支与循环

2024-04-19 23:07:25 980

空空如也

空空如也

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

TA关注的人

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