![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 71
MindibniM
这个作者很懒,什么都没留下…
展开
-
快速排序和冒泡排序
排序算法是计算机科学中的基础工具之一,对于数据处理和算法设计有着深远的影响。了解不同排序算法的特性和适用场景,能够帮助程序员在特定情况下选择最合适的算法,从而提高程序的效率和性能。本节我们讲述两种交换排序。原创 2024-01-06 15:40:04 · 1219 阅读 · 0 评论 -
归并排序的实现
将已排序的子序列合并为一个新的有序序列。这是通过比较每个子序列的头部元素,选择最小的元素放入新序列,然后将相应子序列的指针向后移动一步,直到所有的子序列都被合并为一个新序列。对于内存受限的环境,这可能是一个显著的缺点。如果子序列的长度为1或零,那么它被认为是有序的。将原始序列划分为若干子序列,直到每个子序列包含一个或零个元素,即认为这些子序列是有序的。归并排序是一种稳定的排序算法,即对于具有相等键值的元素,其相对顺序在排序后保持不变。gap表示每一有序序列的元素个数,从最小的1个元素开始合并,两两合并。原创 2023-12-12 21:34:22 · 480 阅读 · 0 评论 -
选择排序和堆排序
排序算法是计算机科学中的基础工具之一,对于数据处理和算法设计有着深远的影响。了解不同排序算法的特性和适用场景,能够帮助程序员在特定情况下选择最合适的算法,从而提高程序的效率和性能。本节我们讲述选择排序和堆排序。原创 2023-12-11 21:11:22 · 1183 阅读 · 0 评论 -
插入排序和希尔排序
排序算法是计算机科学中的基础工具之一,对于数据处理和算法设计有着深远的影响。了解不同排序算法的特性和适用场景,能够帮助程序员在特定情况下选择最合适的算法,从而提高程序的效率和性能。本节我们讲述插入排序和希尔排序。原创 2023-12-11 20:43:09 · 1039 阅读 · 0 评论 -
二叉树的基本操作
BuyTreeNode用来创建新节点,BinaryTreeCreate用来创建整个树,并返回根节点,传入数组a和一个用来控制下标的pi,pi初始是0,如果K为1表示当前节点是第K层的节点,返回1,否则返回左子树和右子树的第K-1层的节点数。如果当前节点是要查找的,直接返回,不然就向左子树和右子树找,返回找到的节点,找不到返回空。从某个节点到其最远叶节点的路径上的节点数称为该节点的高度。从根节点到某个节点的唯一路径上的节点数称为该节点的深度。没有子节点的节点称为叶节点,它们位于二叉树的末端。原创 2023-12-03 16:38:35 · 414 阅读 · 1 评论 -
堆的实现与操作
堆一般用数组来存储有两种主要类型的堆:最大堆(Max Heap)和最小堆(Min Heap)。在最大堆中,父节点的值始终大于或等于其子节点的值。这意味着堆的根节点是具有最高优先级的元素。在最小堆中,父节点的值始终小于或等于其子节点的值。这意味着堆的根节点是具有最低优先级的元素。原创 2023-11-27 21:44:21 · 415 阅读 · 3 评论 -
栈和队列的基本操作
栈就像往一个木桶里面塞东西.要拿到最开始塞的东西,就得将后塞的东西先出.栈是一个先入后出的数据结构,你只能在顶部放置或移除,而不能在中间或底部操作。这使得栈非常适合处理需要按照相反顺序处理的数据,例如函数调用、表达式求值、括号匹配等应用场景。栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。原创 2023-11-25 16:04:45 · 358 阅读 · 1 评论 -
单链表的操作
链表有很多结构,我们这里先讲述不带头不循环的简单单链表单链表的节点一般由指向下一个节点的地址和数据成员组成,通过当前节点中存放下一个节点的地址,找到下一个节点,最后一个节点的下一个节点为NULL,单链表就是这些节点的组成,原创 2023-11-22 11:12:07 · 35 阅读 · 0 评论 -
顺序表的定义与操作
有三个成员,a是指针,指向我们储存元素的数组的首地址,size表示当前元素个数,capacity表示总容量。原创 2023-10-31 15:35:32 · 42 阅读 · 4 评论 -
程序环境和预处理
预处理在预处理阶段,会将程序里面的宏定义,预处理命令,以及注释等替换,生成.i文件,注释被替换为一个空格,头文件会包含编译 在编译阶段,会将C语言程序翻译为汇编语言生成.s文件,并进行 1.词法分析 2.语义分析 3.语法分析 4.符号汇总汇编 生成符号表,并将汇编代码翻译为二进制命令,生成.obj文件原创 2023-10-21 19:45:00 · 66 阅读 · 4 评论 -
C语言文件操作
缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的,取名FILE.原创 2023-10-11 11:40:46 · 47 阅读 · 5 评论 -
动态内存管理
C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。原创 2023-10-02 10:43:40 · 52 阅读 · 4 评论 -
自定义类型
结构体的对齐规则:1. 第一个成员在与结构体变量偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。3. 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整 体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍原创 2023-09-23 21:01:03 · 54 阅读 · 3 评论 -
部分字符串函数与内存函数
strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针,(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。) strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串 中的位置。这是一个字符串比较函数,标准规定: 第一个字符串大于第二个字符串,则返回大于0的数字 第一个字符串等于第二个字符串,则返回0 第一个字符串小于第二个字符串,则返回小于0的数字。原创 2023-09-21 09:50:35 · 70 阅读 · 9 评论 -
如何设计一个全类型冒泡排序
四个参数,第一个接受任意类型的数组,第二个是数组的元素个数,第三个是每个元素的大小,第四个是一个函数指针,指向一个使用者自己写的比较函数,原创 2023-09-14 17:12:31 · 51 阅读 · 1 评论 -
指针进阶(1)
储存一个函数的地址,上面p为指针变量名,后面的()表示函数的参数,因为这个函数没有参数,所以不写,最前面是函数的返回类型,之后我们就可以调用 指针变量(参数) 来调用这个函数原创 2023-08-30 18:23:47 · 38 阅读 · 0 评论 -
C语言初级结构体
结构体是一些数值的集合体,比如一个学生的信息这就创建了一个学生信息的结构体,typedef修饰后,使得结构体成为一个自定义类型,后面就可以用Stu 变量名,来快速定义一个学生,结构体里的类型可以任意,字符,整型,其他结构体,数组都可以,如果使用typeded修饰,那么最下面的括号外的Stu代表一个自定义类型,如果不用typedef修饰,那么最下面的括号外的Stu表示一个变量。原创 2023-08-05 15:08:38 · 49 阅读 · 1 评论 -
数据在内存中的储存
数组类型> 结构体类型 struct> 枚举类型 enum> 联合类型 union指针类型:int *pi;char *pc;float* pf;void* pv;还有空类型void。原创 2023-08-05 16:22:23 · 37 阅读 · 1 评论 -
C语言一维数组和二维数组
数组是一组相同类型元素的集合。数组的创建方式:注:数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数 组的概念。原创 2023-07-27 20:54:42 · 78 阅读 · 1 评论 -
c语言函数
自定义函数是程序员定义的用于执行特定任务的代码块,通过自定义函数,程序员可以将一段重复使用的代码封装起来,并给它一个特定的名称,以便在程序的其他部分多次调用.即方便又能使代码更有可读性.函数调用是通过函数名称和实参来执行函数体内的代码块,比如Print(arr),假设这个函数用于打印数组的全部数据,那么传入arr就是数组,对于声明,这个函数不需要返回值,声明即可void Print(int arr);调用函数可直接Print(arr);原创 2023-07-26 17:19:57 · 47 阅读 · 1 评论 -
选择与循环语句
c语言中的选择与循环语句原创 2023-07-18 16:49:30 · 41 阅读 · 1 评论