- 博客(19)
- 收藏
- 关注
原创 链表、线性表的链式表示和实现
另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了。当链表不设头结点时,假设 L 为单链表的头指针,它应该指向首元结点,则当单链表为长度n 为 0 的空表时, L 指针为空(判定空表的条件可记为:L== NULL)。增加了头结点后,首元结点的地址保存在头结点(即其 “前驱” 结点)的指针域中,则对链表的第一个数据元素的操作与其他数据元素相同,无需进行特殊处理。增加头结点后,无论链表是否为空,头指针都是指向头结点的非空指针。
2022-11-22 01:14:48 218 1
原创 顺序表、线性表的顺序表示和实现
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素, 这种表示也称作。
2022-11-22 01:12:44 163
原创 字符串、字符串函数
串联字符串,将源字符串的副本附加到目标字符串。目标中终止的空字符将被源的第一个字符覆盖,并且空字符将包含在由目标中的两个字符串联而成的新字符串的末尾。比较两个字符串,此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续使用以下对,直到字符不同或到达终止的空字符。返回指向str1中首次出现的str2的指针,如果str2不是str1的一部分,则返回空指针。将源指向的C字符串复制到目标指向的数组中,包括终止的空字符(并在该点停止)。结尾的一维字符数组。字符串实际上是使用空字符。是用于标记字符串的结束。
2022-11-10 00:18:14 191
原创 运算符、运算符优先级
算术运算符 > 关系运算符 > && > || > 赋值运算符。同一优先级的运算符,运算次序由结合方向所决定。本文出现任何错误,欢迎留言批评指正。
2022-11-10 00:17:49 342
原创 循环语句、while语句
表达式2为条件判断部分,用于判断循环时候终止。表达式1为初始化部分,用于初始化循环变量的。表达式3为调整部分,用于循环条件的调整。本文出现任何错误,欢迎留言批评指正。
2022-11-10 00:17:24 146
原创 文件操作、文件读写
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。如果读取的内容为空,则返回的指针为空指针(str的内容保持不变)。每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。如果文件成功打开,函数将返回一个指向file对象的指针,该指针可用于在将来的操作中标识流。
2022-11-10 00:17:09 676
原创 输入&输出、printf、scanf
根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。:根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。该函数以无符号 char 强制转换为 int 的形式返回写入的字符,如果发生错误则返回 EOF。
2022-11-09 19:23:08 174
原创 枚举、enum
枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。enum 枚举名 {枚举元素 1 , 枚举元素 2 , …… };代码示例//枚举的三种方法 //先定义枚举类型,再定义枚举变量 enum DAY {//定义枚举类型的同时定义枚举变量 enum DAY {//省略枚举名称,直接定义枚举变量 enum {第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。当我们不想使用默认的值,我们也可以为其赋值enum DAY {
2022-11-09 19:21:53 213
原创 结构体、结构体大小的计算
struct:struct是关键字,定义结构体,必须使用struct语句tag:结构体的标识符:结构体的成员变量:结构体变量,您可以指定一个或多个结构体变量,这是一个全局变量(可以不写,不写的话这里就是声明结构体)代码示例//名字 int age;//年龄 char sex [ 5 ];//性别 char id [ 20 ];//学号 };//分号不能丢 //上面只是声明结构体 struct Books {//标题 char author [ 50 ];
2022-11-09 19:20:26 266
原创 共用体、联合体
共用体跟结构体一样也包含着一系列的成员,但是不同的是共用体的所有成员公用一块内存空间共用体语法定义格式union:union是关键字,定义共用体,必须使用union语句tag:共用体的标识符(可选):共用体的成员变量:共用体变量,您可以指定一个或多个结构体变量,这是一个全局变量代码示例union Un {char c;int i;} u;//声明类型的同时定义变量u int main() {//共用体变量的定义 union Un un;return 0;}
2022-11-09 19:17:54 240
原创 动态内存管理、动态内存函数、柔性数组
数组在声明时会指定数组的长度,在编译的时候会给数组分配内存,但有时我们需要的空间需要到程序运行的时候才知道,那指定数组长度在编译的时候分配空间的这种方式就不能满足要求了。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。分配和零初始化数组,为num个元素的数组分配一块内存,每个元素的大小为字节长,并将其所有位初始化为零。如果参数 ptr 指向的空间不是动态开辟的,那free函数的行为是未定义的。:开辟内存块的大小,以字节为单位。
2022-11-09 19:15:25 342
原创 C语言指针、回调函数
数组指针:指向数组的指针,数组指针的指针变量代码示例//定义数组指针 int(* p) [ 10 ];return 0;}我对先找到变量的名字p,p和*被()括起来优先级高,p和*先结合,说明这是一个指针变量把(*p)拎出来,剩下int [10],既然这是一个指针变量,那么把指针变量的名字p和*找出来了,剩下的就是指针变量指向的类型int [10]里面,[]表示这是一个数组,里面的数字表示数组元素的个数,最后剩下的就是数组元素的类型,所以int [10]
2022-11-09 19:12:02 557
原创 C语言数组、一维数组、二维数组
通过调试发现我们求得的数组的长度不对,我们再看传过来的数组跟当做实参的数组不一样,函数里面的数组只有一个元素。其实,数组名表示的是数组首元素的地址值,所求得的数组长度就不对,程序就没有达到我们需要的功能。数组的索引是从0开始,如果数组的长度为n,那么最后一个元素的索引为n-1。那么元素索引小于0,或大于n-1时,就是数组越界访问,超过了数组的空间。数组的初始化指的是在数组声明时同时赋予数组合理的初始值。可以通过数组的索引找到特定的元素,数组的索引从0开始。下面的代码是查看数组每个元素的地址值。
2022-11-09 19:06:36 2445
原创 C语言函数
函数的定义是指函数的具体实现,交待函数的功能实现。test.c文件//定义函数且声明 int add(int a , int b) {return 0;}
2022-11-09 19:00:43 309
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人