自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 链式二叉树

链式二叉树,顾名思义,就是用链表实现二叉树,关于,链式二叉树,又有前,中,后续遍历。

2024-07-26 10:13:06 280

原创 堆的相关特点

给定一个数组,其中数组里面的元素个数是个如何能够把这个数组建立成为一个堆,今天探讨两种方法,分别是向上调整法和向下调整法,分别探讨他们的时间复杂度。

2024-07-19 16:36:30 554

原创

数是一种非线性的数据结构,把它叫做数的原因是因为它的结构看起来像一颗倒挂的树一样,它的根是朝上的,叶子是朝下的,如下图值得注意得是,树得子数之间不能有任何交点,否则就不能称作为树,比如下面的二叉树,顾名思义,就是有两个子树 ,关于二叉树,有两种特殊的结构,分为满二叉树和完全二叉树满二叉树:每一个根有两个节点完全二叉树:一个根可能有一个节点,也可能有两个节点,但是得满足一个条件,完全二叉树得数据从左到右必须是连续的,比如下面的下面的二叉树不是完全二叉树,因为数据从左到右不是连续的。

2024-07-16 21:29:36 852

原创 队列

队列也是数据结构中的一种结构,和栈不同的是,队列是一端进行插入,另一端进行删除队列的一种典型应用场景就是医院或者银行里面的打票机,刷身份证录入系统就相当于数据的插入,取票就相当与删除数据与栈的实现类似,队列同样可以用顺序表或链表实现,但是由于队列是一端进行插入,一端删除,对于删除,用顺序表的话比较麻烦,还要挪动数据,所以这里运用链表比较方便。

2024-07-10 10:51:36 216

原创

栈是一种数据结构,只允许在固定一端进行插入和删除功能,进行插入和删除的一端叫做栈顶,另一端叫做栈底,遵循后入先出的规则,就像穿烤串和吃烤串一样其中,插入数据叫做对数据的删除叫做一般用链表或者数组来实现栈,但是由于对于数组来实现元素的插入和删除更加方便,所以用数组来实现栈。

2024-07-08 21:04:28 337

原创 顺序表和链表的优缺点

顺序表的底层是一个数组,数组只需要知道下标就可以访问数组里面的元素了,所以,顺序表自然而让就可以进行随机访问了。

2024-05-18 21:05:51 258

原创 贪吃蛇小游戏

贪吃蛇游戏是一个小游戏,它需要用到的知识有C语言知识:函数,指针,结构体等等,数据结构中的链表,还有一些 Win32API的知识。

2024-05-16 16:23:37 868

原创 C语言实现猜数字小游戏

这个函数是用来生成随机数的,返回值是正整数,他的值的范围是0到rand_max之间的,rand_max的值在大多数编译器上面是32767,rand()函数的使用必须包含头文件#include<stdlib.h>,下面是对rand()函数的使用。在里可能会有一个误区,觉得ranf_max是32767,那么上面的就应该是1到68之间,这样的理解是错误的,正确的理解是:先产生一个数,这个数是0到32767中的任何一个,比如32699,这个数先取余100,再加1,得到100。下面是这个函数的使用。

2024-05-11 15:14:02 1006 1

原创 带头双向链表

ListNode;

2024-05-04 20:56:25 331 1

原创 单链表经典算法

在链表中,最值得注意的是,尾插链表,插入的是该节点和该节点后面的节点,也就是一串节点在插入链表的时候,记得要将该节点后面置为空。

2024-05-02 15:01:25 924 2

原创 数据结构—单链表

之前的文章已经谈到了顺序表,关于顺序表,有一下的几种特点1.中间,头部的删除,复杂度为O(N);2.增容会有申请新的空间,拷贝数据,释放旧的空间,会有不小的消耗;3:整容一般是呈2的倍数增长,但是也会造成一定的空间浪费,比如,当前的容量是100,满了以后·增加到200,我们继续插入5个数据,后面没有数据插入,就浪费了95个空间。

2024-04-23 21:17:22 851 2

原创 顺序表的应用—多指针算法

对于上面的题,有以下的两种思路。

2024-04-19 19:16:21 284 2

原创 顺序表的应用---通讯录

通讯录的实现依赖于顺序表的实现,顺序表里面的的数据类型各种各样,可以是整形,字符型,还可以是浮点型去去,但是只要把里面的数据类型用一个结构体来代替,就可以实现通讯录项目。

2024-04-16 19:07:16 189

原创 数据结构之顺序表

如果在以后写代码的时候,要求将顺序表里面的int类型的数据转换成为其他数据类型的时候会比较方便,如果要求改顺序表里面的int类型的话,但是其他部分的代码也有int类型的话,你如果使用一键替换功能的话,就会把其他部分的替换了,但是使用从定义的话,就不存在这个问题。在进行扩容的时候,最好是扩容到原来的1.5,2,或是4倍,如果一次扩容一点的话,就会扩容的越频繁,由前面对动态内存管理里面realloc函数的理解,浪费的空间可能会越来越多,倍数太大的话又会造成空间浪费过多。顺序表的分类:静态顺序表,动态顺序表。

2024-03-11 20:05:14 368

原创 预处理详解

语言中定义了一些预处理符号,在程序中可以直接使用,比如下面的__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义下面是使用他们的例子int main()这里有的编译器可能会报错,说明该编译器不支持ASCIN creturn 0;运行结果语法。

2024-03-06 16:12:09 626 1

原创 编译和链接

我们知道c源文件是被转换成为可执行文件才能够被编译器执行在ANSCI的规定中,存在两个环境:翻译环境 执行环境翻译环境:将源代码转换成为可执行的机器代码(二进制)执行环境:用于实际执行代码。

2024-03-05 15:59:37 700 1

原创 文件操作

程序设计中,文件分为:程序文件 数据文件程序文件:源程序文件(文件后缀为.c),可执行文件(文件后缀为.exe),目标文件(后缀为。obj)数据文件:其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使⽤,这⾥处理的就是磁盘上⽂件。文件名⼀个⽂件要有⼀个唯⼀的⽂件标识,以便⽤⼾识别和引⽤。⽂件名包含3部分:⽂件路径+⽂件名主⼲+⽂件后缀?例如: c:\code\test.txt为了⽅便起⻅,⽂件标识常被称为⽂件名。

2024-03-03 12:57:22 1822 1

原创 动态内存管理

对于内存的使用,不只是上述的情况,有些程序的空间只有在运行的时候才能知道,所以C语言给出了动态内存开辟,让程序员自己开辟和释放内存,这样就比较灵活了。3,函数调整空间失败,返回NULL,所以在在接收函数的返回值的时候,要用一个新的指针去判断,不是空指针的时候,才把新的指针赋给值p。()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的⼤⼩,以适应柔性数组的预期⼤⼩。(1)在已经开辟好的空间后面,没有足够的空间,函数会在后面重新申请一块足够空间,同时把旧的空间拷贝过去,返回新的空间的首地址,

2024-02-28 20:03:07 946

原创 自定义类型2:联合和枚举

/这样很是浪费空间,比如:在使用书的特殊属性的时候,结构体里面有的是衬衫的特殊属性,但是用不了,换成下面的代码比较合适,比较节省空间。原本i的值是0x11223344的,但是改变对a进行父赋值了,i的值也改变了,下面的是两个变量的内存。2.当最大成员变量的大小不是最大对齐数的时候,联合体的大小是最大对齐数的整数倍,比如下面的这个。在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐。//使⽤枚举常量给枚举变量赋值。可以看出,他们的内存的地址是一样的,这也说明了联合体是共用一块内存的。

2024-02-16 22:43:52 899 1

原创 自定义类型1:结构体

上图为该结构体的内存布局,从c1开始,偏移量为0,int类型的i为4个字节,4个字节小于vs默认的8个字节,偏移量为4,从4的整数倍开始,占4个字节,从4到7,c2为char,占一个字节,位置为8,所有的内容最大偏移量为4,8为4的整数倍,所以内存的大小为8。在位段开辟内存的时候,是一个字节一个字节开辟的,当一个变量的内存不满8个比特位,不同的编译器是否会使用剩下的比特位还是从新申请一块内存是不同的。位段的⼏个成员共有同⼀个字节,这样有些成员的起始位置并不是某个字节的起始位置,那么这些位。

2024-02-15 16:12:10 1541 1

原创 数据在内存中的存储

a的低位字节保存在内存中的高地址处,所以为小端存储,unsigned char(无符号字符型)

2024-02-13 13:23:38 771 1

原创 C语言内存函数

同字符串函数strcmp函数一样,比较的同样是ASCI码值,如果相同的话,返回的是0,大于返回的是1,小于返回的是-1,从前往后两个内存的同一位置相互比较,相等就继续,一不相等就停下。上,虽然运行的结果是正确的,但只是仅限于VS操作软件,因为每复制一块空间,后面的空间都会瞬间被更新,再拷贝的时候将会拷贝已经更新的,但是要求的是拷贝旧的,(这里可以画图理解一下)如果想要实现刚才的功能,需要函数memmove函数,再C语言中规定,memcpy拷贝的不重叠的内存,memmove函数拷贝的是重叠的函数。

2024-02-06 13:53:34 661 2

原创 字符串函数

功能是计算字符串函数的长度,传入的参数是字符串首元素的地址,但函数参数传入的时候,函数向后遍历元素的地址,当遇到“\0"时,函数会停下来,即函数统计的是\0前面的字符数。值得注意的是,当字符串为下面的形式的话,函数计算出来的字符串长度是一个随机数,因为没有\0结尾,函数会一直向后遍历,不知道何时遇到\0。• strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标。从前面往后,因为arr2的第一个字母b的ASCI码值小于arr1的第一个字母a的,所以返回的是-1。

2024-02-02 22:06:33 1823

原创 初识指针

初步认识指针

2024-01-29 20:50:12 270 1

原创 关于c语言的选择和循环语句

他的执行结果是1 2 3 4 5 6 7 8 9 10.程序的执行逻辑是,初始化一个变量,先判断条件是否成立,如果条件成立的话,就执行下面的语句,等下面的语句运行结束的话,在到上面的调整部分,然后在判断,再执行,知道条件不成立结束循环,上面的话,就是初始化i为0,然后再判断条件是否小于11,小于11成立,下面打印i的值,打印完了之后,回到上面的i++部分,让i的值加一,然后再判断,再执行。这个程序执行的是先打印i的值,再判断i的值是否小于11,如果小于的话,就继续打印然后再判断,再执行,

2023-11-02 18:16:36 58 1

空空如也

空空如也

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

TA关注的人

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