- 博客(46)
- 收藏
- 关注
原创 【数据结构】--- 堆
1.1堆的概念以及结构简单来说,堆总是一个完全二叉树,如果每一个节点都比其子节点的值大就叫大堆,反之就叫做小堆。。
2024-07-10 11:39:19
1141
1
原创 Win32 API
Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外,它同时也是⼀个很⼤ 的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程序达到开启 视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application),所以便 称之为Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应⽤程序编程接⼝。
2024-05-26 08:00:00
1735
19
原创 人生苦短,我学python之数据类型(下)
一.集合1.1子集与超集1.2交集,并集,补集,差集1.intersection(英文:交叉)函数2.union(英文:联合)函数3.difference函数4.symmetric_difference()函数二.bytes三.bytearray
2024-05-25 12:00:00
959
3
原创 树与二叉树
一.树1.1树的概念1.2树的相关概念1.3树的表示二.二叉树2.1二叉树的概念2.2特殊的二叉树2.3二叉树的数学规律2.4二叉树的存储结构2.5二叉树的顺序结构及实现
2024-05-23 12:00:00
1145
4
原创 每周刷题第一期
题目一:反转链表题目二:链表的中间节点题目三:环形链表的约瑟夫问题题目四:分隔链表题目五:合并两个有序数组讲解题目六:移除链表元素题目七:轮转数组
2024-05-22 12:00:00
922
23
原创 时间复杂度和空间复杂度
一.算法的效率1.1如何衡量一个算法的好坏呢?1.2算法的复杂度二.时间复杂度2.1时间复杂度 的概念2.2大O的渐进表示法2.3常见的时间复杂度三.空间复杂度四.常见的复杂度
2024-05-22 11:00:00
1241
25
原创 人生苦短,我学python之列表(中)
1.列表的嵌套2.列表中元素的顺序3.遍历列表4.range()函数5.深入理解range(x, y, z)的运行过程6.列表统计函数7.列表生成
2024-05-21 12:00:00
1110
22
原创 人生苦短,我学python之列表(上)
1.列表的定义2.列表的下标3.列表的元素访问与删除4.eval()函数5. 列表元素的增加1.append()函数2.insert()函数3.extend()函数6.列表元素的删除1.del语句2.pop()函数3.remove()函数4.clear()函数
2024-05-21 11:00:00
999
16
原创 数据结构之循环队列
一.循环队列1.循环队列的介绍2.循环队列的实现这个循环队列的结构体怎么完成?rear指针的实际意义那么如何解决判满判空呢?如何让队列循环起来?3.代码1.myCircularQueueCreate()函数2.判满判空函数3.插入删除函数4.查看队首队尾元素5.释放函数
2024-05-20 12:00:00
1429
26
原创 双向链表详解
我们一般所说的双向链表是带头循环双向链表,这里的带头更我们之前的头节点不是一回事。带头链表里的头节点,实际上为哨兵位,哨兵位的头节点种是不存放任何有效数据的,只是站在这里起到放哨的作用。哨兵位的意义:避免遍历数组时发生死循环。虽然双向链表的结构比单链表更加复杂,但是实现其实更加简单。
2024-04-18 10:41:11
1029
58
原创 单链表讲解
链表的结构与火车是类似的,一节一节的,数据就像乘客一样在车厢中一样。与顺序表不同的是,链表里的每节"车厢"都是独立申请的空间,我们将这样的空间称为或者既然链表是一节一节的结点构成的,那么这样的结点是怎么连接的呢?链表中的节点一般是通过结构体来实现的,结构体中的存储着数据和下一个节点的地址,这样我们就可以访问下一个节点中的数据了。为了使用方便我们可以对其重命名。
2024-04-15 16:36:00
758
20
原创 顺序表讲解
数据结构是由“数据”和结构两词组合而来。你的游戏账号,身份信息,网页里的信息(文字,视频,图片),手机app存储的信息等等这些都是数据。在生活中,我们是有很多数据的,当我们想要使用大量的同一类型的数据的时候,通过手动定义大量的独立变量对于程序员的消耗是很大的,并且可读性非常的查,无法轻易的实现查找数据,排列数据等基本功能。可读性非常差,我们可以借助数组这样的数据结构将大量的数据组织在一起,结构也可以理解为组织这样结构的方式。数据结构是计算机存储,组织数据的方式。
2024-04-10 15:05:34
938
13
原创 动态内存管理
但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译方式就不能满足了。C语言引入了动态内存开辟,这样我们自己可以根据情况自行申请和释放空间,就比较灵活。动态内存是计算机中一种特殊的内存,用于存储在程序运行时创建和使用的数据。动态内存通过使用堆来分配和管理内存。与静态内存相比,动态内存的大小和生命周期不是在编译时确定的,而是在运行时根据程序的需求进行动态分配和释放。
2024-03-29 14:52:57
1046
2
原创 结构体讲解
位段的成员必须是int 或者unsigned int或者signed int ,在C99中位段成员的类型也可以选择其他类型位段的成员名后面后一个冒号和一个数字。int b:5;int c:10;int d:30;A就是一个位段类型那么位段A所占内存的大小是多少?答案是8.为什么呢?变量名的后面跟着一个冒号数字代表这个数字只占多少个bit位。比如int c:10,表示这个c变量占据了10个bit位。
2024-03-25 17:45:25
965
4
原创 atoi函数
如果这种非数字的字符串在前面就会解析失败,也就是所想要成功转化,这个字符串中的数字就必须在前面。返回值:如果解析失败,这个函数就会返回0(字符串中的数字字符是0也会返回0,并不一定失败)。这个函数讲“123”这样的字符串转化为了123.也就是将字符串中的整数提取出来了作为了整形数据进行返回。这个函数的作用是将str所指向的字符串进行解析得到一个整形的数据,在将其作为返回值。这个函数对字符串进行读取的时候,首先会跳过前面的所以空格字符。这个字符串中在整数字符的后面是可以包含额外的字符的。
2024-03-23 20:38:08
532
原创 浮点数在内存中的存储
当数据在内存中的大小超过一个字节的时候,这时候就有了存储顺序的问题,根据不同的存储顺序,分为了大端字节序存储和小端字节序存储。大端字节序存储:一个数据的低位字节的内容保存在高地址处,而高位字节的内容保存在低地址处,我们就将其称为大端字节序存储小端字节序存储:一个数据的低位字节的内容保存在低地址处,而高位字节的内容保存在高地址处,我们就将其称为小端字节序存储。
2024-03-23 20:38:06
1080
1
原创 C语言内存函数
strcpy是复制字符串,而memcpy就是复制内存块。memcpy会从source所指向的空间复制num个字节(不是元素个数而是字节)到destination所指向的空间。source和destination所指向的的对象的类型是不重要的,这个函数仅仅是对二进制数据的拷贝。这个函数与strcpy不同,它是不会管‘\0’的,总是精准的复制num个字节。为了避免越界。source和destination所指向的空间的大小至少应该是num个字节。
2024-03-22 20:52:37
1139
1
原创 字符函数与字符串函数
函数功能是返回字符串的长度。字符串的长度是有'\0'字符决定,它之前的字符个数就是字符串的长度。C字符串的长度等于字符串开头和'\0'字符之间的字符数.注:字符串长度是不包括'\0'的注意字符串的长度是与包含字符串的数组的大小不一样的。通过调试,我们可以发现,这个数组的类型是char[7]说明这个数组大小是7,但是字符串的长度是6。所有我们如果给【】中加上值,这个值的大小至少要是7,不能比7小不如就存不下这个字符串。那么多余的值就会被初始化为'\0'.
2024-03-22 20:52:13
929
1
原创 python讲解(4)
使用关系运算符对float类型的数据进行比较时会出现出现一定的问题。运行这个代码,在控制台会打印False,说明0.1 + 0.2是不等于0.3的。但这是不符合常理的。这是因为。控制台上会打印0.30000000000000004。而不是0.3.所以在比较浮点数时我们一般会使用差值比较的方式。只要它的差值小于我们所期望的值,我们就可以认定a和b是相等的。
2024-03-19 05:00:00
984
1
原创 python讲解(1)
于1989年圣诞节为打发无聊的时间,开发了一个新的脚本解释程序,第一个公开发行版发行于1991年。至于为什么选中python作为语言的名字,是因为他是一位名叫Monty Python的戏剧团的爱好者。二.python的特点优雅,简单,明确python是一个下限特别低,上线高的编程语言。下限低:上手容易,特别时候小白作为第一门编程语言进行学习,通过简单的代码就可以做出实用的功能,特别容易培养出对编程的兴趣。
2024-03-13 09:47:08
892
1
原创 C语言--- 指针运算笔试题详解
解析:a是数组首元素的地址,类型为int*,+1跳过一个元素,再解引用就是第二个元素。&a是整个数组的地址,+1跳过整个数组,再强制类型转化为int*类型,-1就是数组最后一个元素的地址,解引用后就是最后一个元素。答案:2,5。
2024-03-11 20:02:08
612
1
原创 C语言 --- 指针(5)
sizeof(数组名),这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩。& 数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址。除此之外所有的数组名都表⽰⾸元素的地址。
2024-03-10 13:56:40
945
1
原创 C语言---指针(4) qsort函数
读者可以自行用上面的数进行尝试,我们会发现最大的那个数经过了一轮交换后(因为最大的数一定比它右边的数大,所以它会一直交换下去,直到最后一个位置),就到了最后一个位置,但其他的数还是乱的,所以我们要接着进行下一轮交换,但是因为最大的数已经在它该在的位置上了,这样在下一轮的交换中我们就不需要比较第九个数和第十个数了;同理后面也是如此……第九轮的时候比较一次,也就是第一个位置上的数和第二个位置上的数进行比较,第二个位置上的数确定了后,同理第一个位置上的数也应该是最小的了,所以就不用比较了。不再是张三,38岁。
2024-03-04 18:01:53
941
1
原创 C语言--- 指针(3)
在指针的类型中,我们知道有一种指针类型为字符指针这里是把一个字符串放到了pstr的指针变量里了吗?其实不是,本质上是将字符串的首字符的地址放到了pstr中。在解引用后我们会发现打印的是h,也就是将字符串中首字符h的地址存放到了指针中因为pstr的类型是char*,所以+5会跳过五个字节从而只打印了后面的world。这也证明了pstr储存的就是首字符的地址。虽然这个代码在编译的时候并不会报错,但是程序运行时会崩溃。为什么呢?因为“hello world”是常量字符串,常量字符串是不能修改的。
2024-02-27 08:00:00
1088
1
原创 C语言 --- 指针(2)
读者可以自行用上面的数进行尝试,我们会发现最大的那个数经过了一轮交换后(因为最大的数一定比它右边的数大,所以它会一直交换下去,直到最后一个位置),就到了最后一个位置,但其他的数还是乱的,所以我们要接着进行下一轮交换,但是因为最大的数已经在它该在的位置上了,这样在下一轮的交换中我们就不需要比较第九个数和第十个数了;第九轮的时候比较一次,也就是第一个位置上的数和第二个位置上的数进行比较,第二个位置上的数确定了后,同理第一个位置上的数也应该是最小的了,所以就不用比较了。指针数组的每一个元素都是用来存放地址的;
2024-02-25 12:00:00
1254
1
原创 C语言---详解问题表达式
表达式的求值部分又操作符的优先级和结合性决定。但是并不能完全决定计算顺序,这会根据编译器的不同而体现不同的计算顺序;表达式1中,在计算的时候,由于乘法*的优先级高于加法,只能保证相邻情况下,*的计算比+的计算更早,如:并不能决定表达式中的第三个乘号*比第一个加号+更早执行。所以表达式的计算顺序可能会分为两种。有人可能会想,虽然计算顺序不同,但是结果是一样的。那么这个表达式到底有没有问题呢?其实是有的。如果表达式中的abcdef不单纯是变量,也是表达式的话。
2024-02-24 10:00:00
1422
1
原创 C语言--- 操作符详解(下)
C语言中的整形运算总是至少一缺省整形类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整形,这种转换称为整形提升。整型提升的意义在于:表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。
2024-02-23 13:23:10
1208
2
原创 C语言--- 操作符详解(上)
数字系统分为三种远古时代结绳记事/石板刻线非位置化数字系统罗马数字数字化位置系统二进制 | 八进制 | 十进制 | 十六进制远古时代:在很久以前,人们不会数12345,所以当人需要对某些事情进行计数的时候,比如:上次下雨过了几天等等这类的问题,人们就只能使用结绳记事或者在石板上刻一根一根的线这样的方式进行记录.可是这样的计数方式弊端很大,数字越大越不好数.为了解决上述的问题,人们想到了更加便捷的技术方法.那就是使用不同的符号来表示不同的数字比如我们所使用的数字111虽然使用了三次数字1。
2024-02-21 15:49:59
1339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人