- 博客(24)
- 收藏
- 关注
原创 【数据结构】堆的实现和堆排序--TOP-K问题
在头文件中进行堆的定义和接口的声明int size;}HP;//堆的初始化//堆的销毁//堆的插入//堆的删除//取堆顶的数据// 堆的数据个数//堆的判空堆的实现堆是一种特殊的树形数据结构,通常实现为完全二叉树。堆分为最大堆和最小堆,最大堆的父节点值大于或等于其子节点值,而最小堆的父节点值小于或等于其子节点值。堆通常使用数组来实现,通过索引关系模拟树形结构,支持高效的插入、删除和查找最大/最小元素操作。堆排序堆排序是一种基于堆的排序算法。
2024-06-21 18:00:16
1152
13
原创 【数据结构】二叉树概念及结构
二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点(左子节点和右子节点)。它在计算机科学中广泛应用,如搜索算法、排序和数据压缩等。了解二叉树的基本概念、结构和性质对于掌握数据结构和算法至关重要。
2024-06-15 15:02:00
811
3
原创 队列的实现
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头队列(Queue)是一种线性数据结构,其特殊之处在于它遵循先进先出(FIFO)的原则。队列的主要操作包括在队列的一端插入元素(称为入队,enqueue)和在另一端移除元素(称为出队,dequeue)。由于这种操作限制,队列在访问和操作元素时表现出一种特殊的顺序性。先进先出(FIFO)
2024-06-10 07:00:00
1089
6
原创 栈的实现和括号匹配问题
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。后进先出栈是一种特殊的线性数据结构,它遵循后进先出(Last In, First Out,LIFO)的原则。栈的主要操作包括在栈顶插入元素(称为压栈,push)和从栈顶移除元素(称为弹栈,pop)。
2024-06-10 06:45:00
855
原创 链表算法题(OJ刷题超详细讲解)
经过这次对链表算法题的深入解析,链表作为基础数据结构,其相关算法是编程能力的试金石。通过在线刷题平台,我们可以不断挑战自我,深化对链表的理解,提高算法设计能力。刷题能够让我们更加熟悉各种算法和数据结构,掌握它们的基本操作和应用场景。通过大量的实践,我们能够加深对理论知识的理解,形成自己的编程风格和思维方式。刷题不是目的,应用才是关键。让我们通过刷题,不断提升编程水平,将所学知识应用于实际项目中,成为更优秀的开发者。
2024-06-02 23:29:49
1110
6
原创 空间复杂度
尽管现代计算机的存储容量已经很高,使得在大多数情况下,算法的空间复杂度不再是绝对的限制因素,但这并不意味着我们可以忽视算法的空间复杂度。空间复杂度仍然是评估算法性能的一个重要指标,因为它反映了算法在运行过程中对内存资源的占用情况。因此,尽管在某些场景下空间复杂度可能不是首要考虑的因素,但在设计和实现算法时,我们仍然需要适当关注算法的空间复杂度,并根据具体情况进行优化。特别是在处理大规模数据、资源受限环境或考虑成本效益的场景中,优化空间复杂度能够显著提升算法的性能和效率。
2024-06-02 23:29:34
418
原创 【C语言】函数递归(超详解)
递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问 题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow)。
2024-05-29 23:02:56
963
原创 算法的时间复杂度(详解)
时间复杂度是衡量算法执行效率的重要指标,它表示算法随输入数据规模增长时执行时间的变化趋势。优化时间复杂度可以节省计算资源、提高系统性能、满足实时性要求,并提升用户体验。在设计算法时,应充分考虑时间复杂度的优化,以实现高效、稳定的性能表现。
2024-05-29 22:49:22
2797
4
原创 数据结构--单链表的基本操作
概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的。链表也是线性表的一种。链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。只 需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状 态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾?
2024-05-14 23:53:29
723
11
原创 数据结构---顺序表
数据结构是由“数据”和“结构”两词组合⽽来。什么是数据?常⻅的数值1、2、3、4.....、教务系统⾥保存的⽤⼾信息(姓名、性别、年龄、学历等 等)、⽹⻚⾥⾁眼可以看到的信息(⽂字、图⽚、视频等等),这些都是数据 什么是结构?当我们想要使⽤⼤量使⽤同⼀类型的数据时,通过⼿动定义⼤量的独⽴的变量对于程序来说,可读性 ⾮常差,我们可以借助数组这样的数据结构将⼤量的数据组织在⼀起,结构也可以理解为组织数据的 ⽅式。
2024-05-09 00:10:23
998
2
原创 【C】语⾔内存函数--超详解
函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。这个函数在遇到 '\0' 的时候并不会停下来。如果source和destination有任何的重叠,复制的结果都是未定义的。针对内存进行拷贝(头文件<string.h>)对于重叠的内存,交给memmove来处理。
2024-05-03 16:24:32
328
原创 【C语言】字符函数和字符串函数--超详解
在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,接下来我们就学习⼀下这些函数。
2024-05-02 21:22:00
1763
5
原创 【C语言】数据在内存中的存储
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分 为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。VS上采用的是小段存储上述概念需要记住,⽅便分辨⼤⼩端。
2024-05-02 14:57:50
619
1
原创 【C语言 】自定义数据类型(二)
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫:共⽤体给联合体其中⼀个成员赋值,其他成员的值也跟着变化。运行结果:为什么是4呢?
2024-05-01 16:41:24
708
2
原创 【C语言】操作符超详解
/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化。
2024-04-29 00:02:51
646
原创 C语言预处理详解
基本语法:#define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。思考:在define定义标识符的时候,要不要在最后加上;?建议不要加上;这样容易导致问题。max = MAX;
2024-04-27 15:53:41
717
原创 C语言编译和链接
在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)第2种是执⾏环境,它⽤于实际执⾏代码。
2024-04-24 20:58:24
610
原创 C语言动态内存管理
通过以上例子我们可以总结一下几点:1.在声明变量时,内存空间已经开辟好了,并且开辟的是固定值。2.在声明数组的时候,必须指定数组长度以及数组的元素个数,并且以后不能改变数组的长度。那么这样可能会造成内存浪费,于是就有了动态内存管理,让程序员自己来动态内存的申请空间,要多大空间 就申请多大空间,这样就比较灵活了。
2024-04-23 23:03:54
648
1
原创 冒泡排序和qsort函数
如上图所示,我们先把第一个数字和其相邻的数字进行比较,大则交换,小则不交换(停止),这样对一个数字进行以上操作称为一趟冒泡排序,所有的数字进行以上操作至少要9趟冒泡排序。qsort是一个库函数用来排序数据,底层使用的是快速排序的方式,qsort函数可以排序任意类型数据。举个例子:如果p1 < p2返回小于0的数 ,p1==p2返回0,p1>p2返回大于0的数。冒泡排序的思想:两两相邻的元素进行比较,如果不满足顺序就交换,满足顺序就找下一对。第四个参数是一个函数指针,指向的就是两个元素的比较函数。
2024-04-22 00:23:53
253
原创 C语言——指针超详细讲解
指针就是内存地址内存地址就是指针,或者说指针是用来存放内存地址的。这意味着当我们有一个变量的地址时,我们可以将这个地址存储在一个指针变量中,我们口头说的指针其实指的是指针变量,指针变量就是一个存放地址的变量。
2024-04-21 18:11:35
1096
2
原创 C语言⽂件操作超详解易懂
程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。
2024-04-03 20:25:55
849
4
原创 C语言自定义数据类型(一)
结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,如: 标量、数组、指针,甚⾄是其他结构体。声明结构体的关键字是struct//名字int age;//年龄//性别//分号要记得加上上述代码定义了一个student结构体的类型(名字可以自定义),结构体的类型可以用不同的类型,该类型包含了三个成员变量:name、age、和sex。int x;int y;char a[10];}p1;//声明类型的同时定义变量p1//定义结构体变量p2int main()
2024-03-28 20:49:19
820
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人