- 博客(27)
- 收藏
- 关注
原创 数据结构-思考完全二叉树
小结论三:孩子节点的变化与父节点的变化关系为二倍,只要在映射关系中符合二倍关系,只需证明某一个特殊值符合条件,即可证明式子的普适性。因为该式子孩子权重为0.5,父结点权重为1 符合小结论三,固(孩子下标-1)/ 2 == 父节点下标成立。小结论二:俩个相邻的数字如果第一个是偶数,那么经过除以2的操作后结果是一样的。倒数第二行的最后一个结点(以上俩个结点的父结点)下标为m-2;父结点(2m-4)+1 = 左孩子 = 2m-3。父节点(2m-4)+2 = 右孩子 = 2m-2。
2024-05-22 22:15:20 420
原创 数据结构单链表”质检员“*2
坑3:如果先记下每个节点的random指向的是第几个节点,之后再根据记下的位置给复制的结点的random赋值,这样做虽然可以,但是时间复杂度过高:N(n^2),得遍历每一个结点并通过遍历找到每个结点指向的结点是第几个。问题的关键在于,我们需要一个东西来帮我们记住指向的结点是第几个,依靠暴力统计是不合理的,唯一剩下的能表达位置关系的只有原链表本身,那我们我们该怎么利用呢?如图所示,在原链表每个结点后面插入复制的新结点,这样做的好处是,我们可以方便的确定新结点的random:原理如下。. - 备战技术面试?
2024-04-29 21:39:51 326
原创 c语言利用控制台实现贪吃蛇
system() 函数是一个C标准库函数,它允许程序执行操作系统命令。mode 是命令的关键字,代表“模式”,用于改变系统设备的配置。con 是“console”的缩写,指代命令行界面或控制台窗口。cols=100 设置了窗口的列数(宽度)为100个字符。lines=30 设置了窗口的行数(高度)为30行。长宽(二倍关系);合起来为改变控制台(命令行)窗口的配置:高30 宽100.
2024-04-21 11:28:26 751 1
原创 <c语言学习> 整数和浮点数的存储方式
A+2 = 1 ----------------------> 1111 1110 + 0000 0010 = 1 0000 0001 (左边的1被挤掉)举例:-8 + 8 = 0 ------> 1111 1000 + 0000 1000 = 1 0000 0000 (左边的1被挤出去)(double类型 :E有11位二进制数, 可表示小数点偏移量为:-1023~1024)-8 ----------------------> 1111 1000 (补码形式存储)位数 10 ^ n。
2024-03-17 21:35:17 911
原创 <c语言学习>简单的字符串函数,内存函数 模拟实现
(例如isalpha、isdigit等):这些函数通常用编于检查一个字符是否属于特定类别,如字母、数字等。:复制指定数量的字符从源字符串到目标字符串,并确保目标字符串以'\0'结束(如果空间足够的话)。:比较两个字符串是否相等,如果不等则返回字符差异的差值。:比较两个内存区域的内容,返回差异的第一个字节的差值。:分解字符串成多个标记,用特定分隔符分隔。:从源地址复制指定大小的字节到目标地址。:复制一个字符串到另一个字符串缓冲区。,但是限制添加到目标字符串的字符数量。:将一段内存区域填充为指定的字符。
2024-03-16 10:17:05 382 1
原创 <c语言学习> 编译的过程(主要了解预处理)
在C语言编译过程中,源代码文件会经历一系列转换步骤以生成可执行文件。以下是C语言编译过程的详细阶段: 处理所有`#include`指令,将指定的头文件内容插入到源文件中相应位置。 假设我们有一个简单的C源文件`main.c`,其中包含了一个头文件: 在上面的代码中,`#include ` 是一个预处理指令,它告诉预处理器将标准输入输出库(stdio)的头文件内容插入到此处。 当预处理器遇到这条指令时,它会查找系统定义的标准路径
2024-02-13 23:00:48 1915 1
原创 <c语言学习>结构体对齐,位段:举例
定义结构体S ,内容为一个字符和一个整形,由于结构体对齐,这个结构体所占空间为8字节;存z,t,k的存法与普通的int整形相同,一个字节一个字节的顺序存入;
2024-02-09 17:52:38 389 1
原创 <c语言学习>结构体类型创建、初始化
在C语言中,结构体(struct)是一种复杂的数据类型,允许我们将不同类型的数据组合在一起形成一种新的数据结构。(顺序初始化): 在定义结构体变量时直接为成员赋值。这种方式按照结构体中成员声明的顺序进行初始化。: 可以通过成员名指定初始化顺序或仅初始化部分成员。是可选的结构体标签,用于标识该结构体类型;是成员变量的数据类型,如。是对应的成员变量名。
2024-02-09 14:44:19 485 1
原创 <c语言学习>qsort函数
函数处理的是通用类型的指针,所以它可以用来排序整型、浮点型、字符型以及自定义结构体等多种数据类型,非常灵活和通用。该函数实现了快速排序算法(Quick Sort),能够对任意类型的数据进行排序。如果要对其他类型的数据进行排序,需要相应地修改这个比较函数。如果*(int*)x。(试例为简单的学生结构体,包含名字和年龄,按年龄排序)如果*(int*)x。,表示每个元素的大小为一个整型。的数据,并且保持正确的比较逻辑。类型的指针,在调用qsort。作为比较函数的参数类型。小于*(int*)y。
2024-02-07 18:32:30 354 1
原创 <c语言学习>数组名是什么时候不代表数组首元素地址
后再进行加一操作时,结果增加的并非一个元素的大小,而是整个数组类型的大小。由于数组是一段连续内存空间,因此对于。在这两种情况下,数组名并不表示数组首元素的地址。在其他所有表达式中,数组名可以被看作是数组首元素的指针常量。1. 当使用`&`运算符获取数组名的地址时,得到的是整个数组的地址,而不是数组首元素的地址。和普通整型变量地址加一在行为上确实是有显著区别的。将使地址增加整个数组占用的内存大小,即10个。类型变量所占的总字节数(通常为40字节)。3.当对数组名取地址(例如。
2024-01-30 23:01:38 456 1
原创 <c语言学习>int *p[10]与int (*p)[10]等价吗?
这个声明表示p是一个数组,包含10个元素,每个元素都是一个指向整型变量的指针。也就是说,p是一个指针数组,可以存储10个int类型的指针。这个声明表示p是一个指向数组的指针,这个数组有10个int类型的元素。也就是说,p是指向具有10个int元素的数组的指针。- `int (*p)[10]` 是一个指针,它指向的是一个包含10个int元素的数组。int *p[10]` 和 `int (*p)[10]` 在C语言中并不等价。- `int *p[10]` 是一个数组,数组里的每个元素都是int指针。
2024-01-28 18:19:03 387
原创 <c语言学习>表达式隐式类型转化问题
当一个较小的整数类型(如`char`、`signed char`、`unsigned char`或`short`等)参与算术运算或其他需要至少int类型精度的上下文时,该类型的值会被隐式地转换成较大的整数类型——通常是`int`,如果`int`不能足够容纳所有可能的值,则会提升到`unsigned int`。` 在这种情况下,`signed_num` 被转换为无符号类型,其结果将是 `unsigned_max + 4` (其中 `unsigned_max` 是无符号整型的最大值)。
2024-01-27 17:00:38 822
原创 操作符易错点<c语言学习>
需要注意的是,如果左移的位数超过了类型的最大位数(比如int类型的32位),超出部分通常会被丢弃,并且根据不同的编译器实现和标准,对于有符号整数的左移可能有不同的处理方式,但一般情况下不会因为左移而直接产生未定义行为,除非移动的位数是一个变量并且在运行时决定,这种情况下根据C/C++标准左移不确定数量的位是未定义行为。如果 `a` 的原始二进制形式是 `abcd...`,那么经过 `b = a << 1` 后,`b` 的值将是 `bcd...0`(高位丢弃,低位补0)。如果两个位都是0,则结果位为0。
2024-01-25 20:37:53 955
原创 <C语言学习>逗号表达式
逗号表达式括号内从左到右执行表达式,只有最后一个表达式给左边的变量赋值。输出结果为 a = 14 b = 1 c = 14 d = 3;输出结果为 a = 8 b = 1 c = 8 d = 3。
2023-11-25 16:18:43 358
原创 <C语言学习> 理解局部变量和全局变量出现同名变量能正常运行
3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。所以当变量在临时存储里存在,那直接用临时存储的放的变量(局部变量)当程序需要用到某个变量,会先去临时存储找,如果找到了,就直接用;变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等。如果要找的变量在临时变量里没有,才回去长期存储里找;局部变量存的地方是临时存储,暂时用用的那种;
2023-11-21 00:46:29 434
原创 <c语言学习> sizeof 返回的类型是啥?为啥用%zd作为占位符
d 是int整形的占位符 , %zd 是vs 环境下的独特占位符;sizeof 返回值类型是 size_t;size_t 是无符号整形 ,至于是长整形还是短整形,每个编译器定义的不同;在vs环境里 ,size_t类型数据的占位符是%zd。
2023-11-21 00:24:52 1161 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人