- 博客(16)
- 收藏
- 关注
原创 七种常见的排序算法和实现
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。 我们依次对下面排序进行讲
2024-08-22 09:48:54
1072
原创 二叉树和堆
现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;我们左节点记录孩子的节点,右节点记录兄弟的节点,若没有孩子或兄弟则指向空。兄弟节点:具有相同父节点的节点互称为兄弟节点;节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
2024-08-21 20:03:31
809
原创 动态内存管理
动态内存的分配以及与动态内存有关的几个库函数(malloc,calloc,realloc,free),常见的动态内存的错误以及柔性数组的特点和优势
2024-07-07 16:36:24
713
原创 自定义类型:联合和枚举
联合体类型的声明,联合体的特点以及相同成员的结构体和联合体的对比,联合体大小的计算实用案例,还有联合体的练习,枚举类型的声明,枚举类型的优点以及枚举类型的使用
2024-07-07 15:48:16
832
原创 C语⾔内存函数:memcpy、memmove、memset、memcmp的使用和实现。
注意:以下使用的函数,都要包含头文件<string.h>注意:以下使用的函数,都要包含头文件<string.h>一、memcpy使⽤和模拟实现voidmemcpyvoidconst void* source,size_tnum )1、使用:•函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。•这个函数在遇到'\0'的时候并不会停下来。•如果source和destination有任何的重叠,复制的结果都是未定义的。
2024-06-05 09:35:50
578
3
原创 strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strstr几个库函数的使用和实现。
注意:以下使用的函数均需要包含库文件<string.h>注意:以下使用的函数均需要包含库文件<string.h>
2024-06-03 21:02:25
946
2
原创 深入指针3
什么是函数指针呢?通过前面的学习我们不难发现函数指针实际上是一种指针,里面存放的是函数的地址,通过解引用我们可以使用函数,那我们怎么知道函数是不是有地址呢?我们做一个实验。
2024-05-23 13:55:40
553
8
原创 深入指针2
这⾥我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是 ⾸元素的地址,+1就是跳过⼀个元素。但是&arr 和 &arr+1相差40个字节,这就是因为&arr是数组的地址,+1 操作是跳过整个数组的。如图,我们将一个指针数组,指向三个不同的数组,作为行,然后,将每一个数组作一行。如上所述,访问数组可以用指针的形式进行,当有一个数组arr,且指针指向arr时就有。我们举个例子:整形数组,字符数组,浮点形数组,他们都是数组,因此,
2024-05-21 18:25:03
373
3
原创 深入指针1
我们知道指针变量是储存地址的,长度固定为4/8个字节,那为什么定义指针时还要有不同的类型呢?其实这是为了查找完整的数据,其实指针变量储存的只是第一个字节的地址,那这个数据到底多大?都是不知道的,因此我们需要给指针变量各种不同的类型,举一个生活的例子:你在学生宿舍,你的朋友要找到你,只要他知道你的寝室号就可以很快的找到你,类比与计算机,每一个学生就是一个数据,这些数据存放在内存中(内存类比宿舍),而你可以通过地址来找到这个数据(地址类比寝室号)。概念:野指针就是指向的位置不可知,随机的,不确定的。
2024-05-21 11:08:54
741
3
原创 操作符详解
1.操作符的分类1.操作符的分类•算术操作符:•移位操作符:>•位操作符:& | ^ ~•赋值操作符:+=-=*=/=%==&=|=^=•单⽬操作符:!++--sizeof类型•关系操作符:>=一、算术操作符“+” “-”:和我们小学学的数学一样就是加和减的意思。“*” “/”
2024-04-29 19:58:16
641
原创 利用数组和函数怎么写一个热门扫雷游戏?
首先,我们就要有菜单,可以进入游戏,其次当我们开始玩游戏的时候要打印出棋盘,再者当我们点击一个格子要显示周围有几个雷,最后我们怎么判断游戏是否结束?如图,当我们开始游戏的时候,就显示左边的数据,在计算周围雷的个数就用右边的数组计算,那么当我们点击边缘上一点,该如何计算雷的个数呢?这个问题很简单,只要输入相应的坐标就可以了,例如上图,我们要输入‘1’的绿色格子,只要输入3 6就可以了。要知道因为我们的棋盘是扩大了一圈的,当我们填入雷的时候,为了避免填到外围我们还需要对填入的雷进行判断。1、屏幕上要显示菜单。
2024-04-24 22:51:14
514
3
原创 C语言的语言分支和循环语句
同理(3<4||5<3)在该式子中由于前面的(3<4)为真,而前面说了”||“中只要有一个为真即为真,所以此时计算机知道该式子必为真就不再进行后面的判断。(3>4&&5>3)在该式子中由于前面的(3>4)为假,而前面说了”&&“中只要有一个为假即为假,则此时,计算机知道该式子为假就不再进行后面的判断。一个表达式在进行前面的运算时,就已经得出该表达式是否为真,则该表达式将不再进行后面的计算。表达式1)若表达式1为真,则该式子为假,若表达式为假,则该式子为真。当表达式1成立则表达式2计算否者表达式3计算。
2024-04-11 22:16:36
795
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人