自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 【C语言】实现贪吃蛇--项目实践(超详细)

本次实现贪吃蛇会使⽤到的⼀些Win32 API知识,接下来我们就学习⼀下。

2024-05-23 13:21:00 2507 8

原创 数据结构--双向链表

LTNode;date用来存储数据 ,next指针保存下个节点,prev指针保存前一个节点。

2024-05-18 23:45:08 894 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关注的人

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