- 博客(28)
- 收藏
- 关注
原创 贪心算法--糖果分配 C语言实现
2. 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)给定一个数组 arr 代表得分数组,请返回最少需要多少糖果。1. 每个孩子不管得分多少,起码分到一个糖果。
2023-11-11 16:42:28
294
1
原创 C语言树数据结构
节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一棵树中,最大的节点的度称为树的度;节点的层次:节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;树的深度:树中节点的最大层次;叶节点:度为0的节点。二叉树:是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树有n个节点的完全二叉树,若从上往下,从左到右,从0开始给节点编号,那么:若结果大于n,则无左孩子。若结果大于n,则无右孩子。
2023-09-18 12:00:39
308
原创 C语言实现队列
定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(head)进行删除操作,而在表的后端(tail)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的实现适合用链表结构,因为队列不需要随机访问,并且队列大小不确定;
2023-09-13 14:38:18
59
原创 C语言++a和a++
a++和++a都是函数调用,都有返回值,a++的返回值是a自加之间的值;++a的返回值是该变量的引用,不是具体的值;a++是先将a赋值到一个临时空间,再将a+1赋值给临时变量,等运算结束后再返回临时变量给a;++a是直接对a进行a = a + 1赋值,不需要开辟临时空间;
2023-09-13 14:27:30
1900
原创 C语言常见预处理命令
ifndef (或#ifdef)宏名 //宏名一般格式: __头文件名 _ H。表达式1为假,表达式2为真。#elseif 表达式2。
2023-09-13 14:21:00
96
原创 C语言左值和右值
定义:左值是等号左边的变量或表达式,一般来说值可以改变;右值是等号右边的变量或表达式,特点是可读;一般左值可以作为右值,但右值不能作为左值;
2023-09-13 14:18:02
293
原创 C语言内联函数
定义:一般函数调用过程,保存当前调用命令地址,程序流跳转到调用函数位置执行,最后跳转回保存的命令地址继续执行;对于经常调用的短小函数,这样就会降低程序效率;所以inline关键字告诉程序,在调用内联函数时,直接将函数的机器码插入到调用位置,这样程序执行更有效率。内联函数默认是被static修饰的,在每个用到内联函数的翻译单元中,都必须重复定义这个内联函数,所以一般在头文件定义。inline 修饰符并非强制性的:编译器有可能会置之不理。
2023-09-13 14:15:27
97
原创 C语言指针的运算
指针减指针:一般用于同一个数组,测量两个元素的距离;这个距离不是以字节为单位,是以元素类型的长度为单位。计算结果为1,但是其地址已经指向a[1]了,只是因为是后++,是返回计算前的值。指针加1,不是地址加一个字节,要看指针指向的类型,加一个类型的长度。1再自增,所以结果为2,p指向的还是a[0];先执行++p,所以p指向的是a[1];*和++运算优先级一样,结合性是从右到左;指针加指针:指针之间不能进行加法运算。计算结果为1,p指向的还是a[0];二级指针:指向指针的指针。
2023-09-13 12:12:17
79
原创 C语言堆和栈
堆空间分配过程:操作系统有一个记录空闲内存地址的链表,申请堆空间时系统会遍历该链表,找到第一个大于或等于申请大小的空间,将此空间从链表删除,并分配给程序变量;由于找到的堆节点的大小不一定正好等于申请的大小,系统会自动地将多余的那部分重新放入空闲链表。显然,堆的效率比栈要低得多。一般指堆内存泄漏,一般由于分配内存后未释放造成,或者指向申请的内存指针又指向了另外的空间,导致找不到之前申请的内存;栈的内存地址生长方向由高到底,所以后定义的变量地址低于先定义的变量。每个进程拥有的栈的大小要远远小于堆的大小。
2023-09-13 11:56:47
101
原创 C语言常见关键字
就是错误的,因为声明不会分配地址,也就不能赋值;作用:告诉编译器该变量是容易发生变化的,不能对该变量进行优化,每次取值都必须从内存中去取,不可去之前取值的寄存器去取;在一个文件中需要应用其他文件中定义的函数或变量,就可以在文件中通过extern声明所需函数或变量,在链接阶段起作用;如:在a文件需要引用b文件的int val变量,就可以在a文件用到val变量之前extern int val;如果修饰的是个全局变量(已初始化),存放在只读数据段(未初始化的存放在bss段),该变量不可以被指针修改。
2023-09-13 11:49:58
52
原创 C语言 源码、反码、补码
正数的源码、补码、反码一样负数的反码,符号位不变,其余位对源码取反负数的补码,符号位不变,其余位对源码取反加1举例:(八位)1的:源码:0000 0001 (0x01)反码:0000 0001 (0x01)补码:0000 0001 (0x01)举例:(八位)-1的:源码:1000 0001 (0x81)反码:1111 1110 (0xFE)补码:1111 1111 (0xFF)
2023-09-13 11:08:44
576
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人