自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Leetcode之string

本篇整理了一些关于string类题目的练习, 希望能够学以巩固.博客主页:酷酷学!!!点击关注~首先题目指出, 字符串以空格分隔, 并且不以空格结尾, 可以使用字符串的成员函数, 从后往前寻找, 找到空格的位置, 即为最后一个字符串的分割位置, 使用成员函数substr进行字符串分割, 从pos+1位置,不传第二个参数默认到字符串结尾, 随后输出字符串长度即可.string s;cin>>s;string s2;

2024-07-22 19:34:42 874 5

原创 C++第九弹 -- STL之string类

本文介绍了C++标准库中的string类,包括其定义、使用方法、常用接口.

2024-07-21 12:46:02 1400 20

原创 C++第八弹 -- 模板与STL简介

不懂STL,不要说你会C++

2024-07-19 19:00:44 1140 5

原创 C++第七弹 -- C/C++内存管理

在C/C++编程中,内存管理是至关重要的一个环节。程序员需要合理地分配和释放内存,以确保程序能够正常运行,避免内存泄漏和崩溃。本文将深入探讨C/C++内存管理机制,从内存分布、动态内存管理方式、new和delete的实现原理到定位new表达式,以及malloc/free和new/delete的区别,全面解析C/C++内存管理的方方面面。更多文章, 点击关注博客主页酷酷学!!!正文开始new的原理调用operator new函数申请空间在申请的空间上执行构造函数,完成对象的构造delete的原理。

2024-07-16 12:13:41 1638 23

原创 C++第六弹 -- 类与对象下篇(初始化列表 Static成员 友元 内部类 匿名对象)

本篇文章介绍了类和对象初始化列表, 静态成员变量以及静态成员函数, 友元, 以及内部类和匿名对象, 希望能够帮助读者更好的理解类和对象博客主页:酷酷学!!!(点关注不迷路)正文开始初始化列表本质上是类成员变量定义的地方,它提供了一种在构造函数中初始化成员变量的方式,特别是对于引用、const和自定义类型成员变量,必须使用初始化列表。static成员是类的成员,但与特定对象无关,所有类对象共享一个static成员。静态成员变量需要在类外定义,静态成员函数没有隐含的this指针,不能访问非静态成员。

2024-07-14 18:59:30 990 3

原创 C++第五弹 -- 类与对象中篇下(赋值运算符重载函数 const成员函数 取地址操作符重载函数)

本文将深入探讨C++中的运算符重载,重点讲解赋值运算符、前置/后置++运算符、取地址运算符的重载方法,以及const成员函数的定义和使用方法。通过日期类的实现示例,展示运算符重载和const成员函数在实际应用中的具体代码实现,帮助读者更好地理解和运用这些C++特性。博客主页:酷酷学!!!正文开始C++中的运算符重载可以增强代码可读性,提高代码效率。赋值运算符重载只能是类成员函数,不能是全局函数。前置/后置++运算符重载需要分别定义两个函数,前置++返回引用,后置++返回对象拷贝。

2024-07-12 18:13:46 916 2

原创 C++第四弹 -- 类与对象中篇上(构造函数 析构函数 拷贝构造函数)

让我们一起揭开 C++ 对象生命周期管理的神秘面纱,掌握构造函数、析构函数和拷贝构造函数的精髓!博客主页:酷酷学!!!期待更多好文, 点击关注~本文主要介绍了 C++ 中构造函数、析构函数和拷贝构造函数的概念、特征、应用场景以及注意事项。构造函数用于初始化对象,在对象创建时由编译器自动调用;析构函数用于清理对象资源,在对象生命周期结束时由编译器自动调用;拷贝构造函数用于创建与已有对象相同的新对象,在使用已存在的类类型对象创建新对象时由编译器自动调用。

2024-07-10 21:42:33 2380 4

原创 C++第三弹 -- 类与对象上篇

类和对象是面向对象编程的核心概念之一。类是一种抽象的数据类型,用来描述具有相同属性和行为的对象的集合。对象是类的实例,具体表示某个具体的实体,它拥有类所描述的属性和行为。本篇开始介绍C++中类和对象部分博客主页:酷酷学!!!正文开始// 类体:由成员函数和成员变量组成 };// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;

2024-07-09 15:21:49 1121 23

原创 C++第二弹 -- C++基础语法下(引用 内联函数 auto关键字 范围for 指针空值)

C++11 标准的发布带来了许多新的语言特性,这些特性极大地提升了 C++ 的开发效率和代码质量。本文将深入探讨 C++11 中几个重要的特性,包括 引用、内联函数、auto 关键字、基于范围的 for 循环以及指针空值 nullptr。酷酷学!!!!!正文开始在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?因为函数调用完之后,会自动释放,没必要多此一举。

2024-07-08 15:12:24 1664 13

原创 C++第一弹 -- C++基础语法上(命名空间 输入输出 缺省参数 函数重载 引用)

C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C++学习有一定的帮助,本篇将介绍C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面、IO方面、函数方面、指针方面、宏方面等, 为后续类和对象学习打基础更多好文点击 博客主页:酷酷学!!!期待您的关注!正文开始定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。注意: 这里和结构体的区别在于结构体{}后有;而命名空间没有。

2024-07-07 13:22:53 808 2

原创 十大排序:插入/希尔/选择/堆/冒泡/快速/归并/计数/基数/桶排序 汇总(C语言)

在计算机科学中,排序算法是一种重要的算法类别,用于将一组元素按照特定的顺序进行排列。排序算法的应用非常广泛,从日常生活中的字典排序到大规模数据处理中的并行排序,都离不开排序算法的支持。本博客将介绍十种常见的排序算法,包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序、计数排序、(桶排序和基数排序,稍作了解)。每种算法都会详细讲解其原理、时间复杂度、空间复杂度等关键知识点,以及对比不同算法的优劣势。

2024-07-05 20:46:55 1068 5

原创 归并排序-MergeSort (C语言详解)

好久不见, 前面我们了解到了快速排序, 那么本篇旨在介绍另外一种排序, 它和快速排序的思想雷同, 但又有区别, 这就是归并排序, 如下图, 我们对比快速排序与归并排序.本章也会深入介绍归并排序的两种写法, 递归版本的归并排序与非递归版本的归并排序.酷酷学!!!您的支持是我更新的最大动力!归并排序是一种经典的排序算法,它的基本思想是将待排序的序列分成两个子序列,分别进行递归地排序,然后将两个排好序的子序列合并成一个有序序列。将待排序序列不断地划分,直到每个子序列只有一个元素。

2024-07-03 12:00:48 1096 32

原创 快速排序(Quick Sort)(C语言) 超详细解析!!!

接上文, 前面我们了解了插入排序, 与优化版本希尔排序, 那么本篇博客将详细介绍另外一种排序, 快速排序.博客主页:酷酷学!!!快速排序是一种常用的排序算法,其时间复杂度为O(nlogn)。它的基本思想是通过一趟排序将待排序序列分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再对这两部分分别进行排序,最终得到一个有序序列。完。

2024-06-06 20:47:46 1712 41

原创 插入排序与希尔排序

如图所示为常见的排序算法, 前面我们已经了解了堆排序和冒泡排序, 本篇旨在介绍插入排序以及插入排序的优化版本希尔排序.插入排序和希尔排序都是基于比较的排序算法,都属于插入类排序算法。插入排序是一种简单直观的排序算法,其基本思想是将待排序的元素逐个插入到已排序的序列中的合适位置。希尔排序是对插入排序的改进,通过将序列分割成若干子序列来进行排序,最终达到整个序列有序的目的。博客主页:酷酷学!!!插入排序和希尔排序都是比较简单的排序算法,适用于小规模数据的排序。

2024-06-03 18:00:49 1155 1

原创 由浅入深二叉树刷题指南与讲解

上一篇我们已经了解了二叉树的实现方式, 那么本篇重在进入二叉树OJ刷题环节, 我也会分享我在写题的思路, 帮助我们更好的理解二叉树, 并且本篇也进行二叉树其他方法的实现, 也欢迎不同观点评论区留言.博客主页:酷酷学!!!

2024-05-29 18:46:08 1430 6

原创 链式二叉树的前,中,后序遍历 AND 结点个数及高度等 文末附带全部代码

本文旨在介绍二叉树的链式存储中一些函数的实现博客主页:酷酷学!!!更多文章, 期待关注~前置说明: 在学习二叉树的基本操作前, 需要先创建一棵二叉树, 然后才能学习相关的基本操作. 由于目前阶段对二叉树结构掌握不够深入, 为了降低大家学习成本, 此处手动快速创建一棵简单的二叉树, 快速进入二叉树操作学习, 等二叉树结构了解查差不多时, 我们反过头来再研究二叉树真正的创建方式.}BTNode;

2024-05-26 21:03:06 1401 5

原创 向上调整建堆与向下调整建堆的时间复杂度 AND TopK问题

本篇旨在介绍使用向上调整建堆与向下调整建堆的时间复杂度. 以及topk问题博客主页:酷酷学!!!建堆的时间复杂度为O(N), 使用堆排序的时间复杂度为O(N*logN), 而使用冒泡排序的时间复杂度为O(N^2), 故堆排序的效率明显高于冒泡排序, 而topk则解决了使用较小内存而求取一堆数据中最大或者最小的前k个数据.

2024-05-23 21:32:17 1068 2

原创 堆的实现与堆排序

本篇旨在介绍二叉树中特殊结构堆, 以及堆的实现与应用更多文章 博客主页:酷酷学!!!点击关注 一起加油~int _size;}Heap;// 堆的销毁// 堆的插入// 堆顶数据的删除// 取堆顶的数据// 堆的数据个数// 堆的判空任意节点的值大于或等于其子节点的值(大顶堆)或小于或等于其子节点的值(小顶堆)。二叉树堆是一个完全二叉树,即除了最后一层外,其他层都是满的,并且最后一层的节点都靠左排列。

2024-05-19 18:32:37 1201 5

原创 LeetCode题目: 循环队列与用栈实现队列

“大部分学生与马克思所描述的工人十分相似, 马克思所描述的工人是为了生存, 不得不出卖劳动力, 机械的重复固定的工作, 大部分学生, 也可以说是为了未来的生存, 不得不去学校每周重复地上规定的课, 工人的劳动工资因为竞争加剧, 就不断压低, 学生的分数标准, 因竞争加剧被不断抬高, 工人只有延长劳动时间或加大工作强度, 才能多得一点工资以维持生活, 学生只有延长学习时间或加大学习强度, 才能多考一点分数以保障升学, 人们总说学生有这样的问题那样的问题, 在我看来, 有时候也不能怪学生自己, 而在客观上, 我

2024-05-18 12:33:46 1189 7

原创 队列的实现与OJ题目解析

感情可以培养是个伪命题. 如果有足够多的时间和爱, 就可以让另一个人爱上你的生活, 那谁和谁都可以相爱了. 爱情之所以会让人死去活来, 是因为, 答案都写在了彼此第一次见面的那天.本文旨在介绍队列的实现方法以及OJ有关队列的题目分析博客主页:酷酷学!!!正文开始队列: 只允许一端进行插入数据操作, 在另一端进行删除操作的特殊线性表, 队列具有先进先出FIFO(First In First Out)入队列: 进行插入操作的一端称为队尾出队列: 进行删除操作的一端称为队头。

2024-05-15 14:57:20 1032 13

原创 栈的实现与OJ括号匹配

人总是在坍塌中重建, 有些东西必须摧毁, 才能迎来新生, 不管是那些消耗你的人, 还是令你感到焦虑的事情, 还是一份你觉得毫无意义并且又不喜欢的工作, 又或者是那个内心敏感的自己, 总之你害怕什么, 就要去面对什么, 你想要什么, 就要去靠近什么, 在声色名利中守住本性, 在世俗目光中信步前行, 大浪淘沙, 去伪存真, 破而后立, 否极泰来.本文旨在探讨数据结构中栈的实现以及顺序表与链表区别总结.更多精彩, 期待关注 主页:酷酷学!!!栈。

2024-05-13 15:08:22 1142 73

原创 空间复杂度与链表刷题

空间复杂度表示算法在运行过程中需要使用的额外的空间资源。空间复杂度的计算通常是以算法需要的额外空间大小来衡量的。链表是一种常见的数据结构,用于存储和操作一系列具有关联关系的数据元素。链表的面试题常见的有:反转链表: 将一个链表反转,即将链表中的节点逆序排列。链表中倒数第k个节点: 找到链表中倒数第k个节点的值。链表是否有环: 判断一个链表是否存在环。合并两个有序链表: 将两个有序链表合并为一个有序链表。删除链表中的重复元素: 删除链表中重复的元素,使得每个元素只出现一次。

2024-05-11 13:21:38 1117 22

原创 算法的时间复杂度

博客主页:酷酷学!!!正文开始时间复杂度是衡量算法性能的重要指标,它描述了算法的运行时间随着输入规模的增加而增长的趋势。通过对时间复杂度进行分析,我们可以估计算法在不同规模下的运行时间,从而选择更优的算法。!!完。

2024-05-08 15:05:03 1341 8

原创 C语言实现贪吃蛇

本文旨在使用C语言和基础数据结构链表来实现贪吃蛇经典小游戏更多精彩 点击个人主页:酷酷学!!!代码仓库Gitee:爱马仕正文开始贪吃蛇是久负盛名的游戏, 它和俄罗斯方块, 扫雷等游戏位列经典游戏的行列.在编程语言的学习中, 以贪吃蛇为例, 来提高编程能力和逻辑能力.以上是一个简单的贪吃蛇游戏的代码总结,具体的实现方式可能会有所不同,但是核心的思路是相同的。!!

2024-05-06 21:40:36 2673 28

原创 C语言数据结构 ---- 单链表实现通讯录

顺表实现通讯录: 点击~顺序表实现通讯录在日常生活中,我们经常需要记录和管理大量的联系人信息,比如朋友的电话号码、家庭成员的生日等等。而通讯录就是一种常见的方式,用于存储和组织这些联系人信息。通讯录可以采用不同的数据结构来实现,前面我使用了顺序表创建, 单链表是一种常用且简单的数据结构之一。单链表由一系列节点组成,每个节点包含两部分:数据域和指针域。数据域用于存储联系人的信息,指针域用于指向下一个节点。在这篇文章中,我们将使用单链表来实现一个简单的通讯录。

2024-05-02 15:45:20 1239 8

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

双向链表是一种常见的数据结构,它与单向链表相比,在存储元素的同时还记录了元素的前驱节点。双向链表可以实现双向遍历,不仅可以从头到尾遍历元素,还可以从尾到头遍历。这种特性使得双向链表在某些场景下更加方便和高效。在双向链表中,每个节点都有两个指针,一个指向前驱节点,一个指向后继节点。这样,我们可以通过前驱指针和后继指针,方便地进行插入、删除、查找等操作。在接下来的文章中,我们将详细讨论双向链表的实现和常见操作。我们将逐步介绍双向链表的构造、插入、删除、查找等操作,并给出相应的代码示例。

2024-04-29 15:53:34 1402 13

原创 刷题日记 ---- 顺序表与链表相关经典算法题(C语言版)

以上是对顺序链表学习中比较经典的算法题, 里面的算法思想很值得学习, 并且涵盖了一些细节和错误, 使得对顺序表和链表的理解更加深刻!!

2024-04-27 17:11:18 1266 5

原创 链表 (2)

补充说明:1、链式机构在逻辑上是连续的,在物理结构上不⼀定连续2、节点⼀般是从堆上申请的3、从堆上申请来的空间,是按照⼀定策略分配出来的,每次申请的空间可能连续,可能不连续本篇旨在实现链表的剩下的方法//查找//在指定位置之前插⼊数据//删除pos节点//在指定位置之后插⼊数据//删除pos之后的节点//销毁链表链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

2024-04-25 18:00:18 1098 45

原创 链表(1)

问题与思考前面我们了解了顺序表中间/头部的插⼊删除,时间复杂度为O(N)增容需要申请新空间,拷⻉数据,释放旧空间。会有不⼩的消耗。增容⼀般是呈2倍的增⻓,势必会有⼀定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插⼊了5个数据,后⾯没有数据插⼊了,那么就浪费了95个数据空间。链表就可以很好解决以上的问题首先定义链表类型,和顺序表一样, 定义一个头文件,两个源文件,在头文件中进行链表的定义和函数的声明,以及包含需要的库函数文件在头文件中定义链表结构体//定义结点的结构。

2024-04-24 21:13:24 764 5

原创 拿捏 顺序表(2) ----- 实现通讯录

书接上文, 我们已经初步了解了线性表, 顺序表其实就是在数组的基础上增加了一些特有的功能, 那么顺序表有哪些应用呢?下面我们一起使用顺序表实现通讯录的功能.酷酷学!!!基于上篇的讲解, 我们继续来给顺序表添加以下三个功能//在指定位置前插入元素//删除指定位置的元素//查找元素所在位置上篇我们已经了解了顺序表基础的运用, 基于此我们让顺序表的功能更完善assert(sp);i>pos;i--)//最后一次arr[pos+1] = arr[pos]sp->size++;

2024-04-22 21:50:17 1007 2

原创 拿捏 顺序表(1)

顺序表是一种线性数据结构,用于存储具有相同数据类型的数据元素。它通过一片连续的存储空间来存储数据,可以按照元素的物理顺序来访问和操作。在顺序表中,元素的存储位置是连续的,可以通过下标来访问元素。通过下标,可以快速访问和修改顺序表中的元素,这是顺序表的一个重要特点。顺序表的插入操作比较复杂,需要将插入位置之后的所有元素后移一位,然后将新元素插入到空出的位置。删除操作也类似,需要将删除位置之后的所有元素前移一位,然后将最后一个元素删除。顺序表的优点是存储和访问元素的效率高,可以随机访问元素。

2024-04-21 18:19:27 1636 3

原创 条件编译 #和##运算符

本章为C语言语法完结撒花, 下文将进行C语言中#和##操作符以及条件编译的讲解, 来进一步让我们了解C语言.作者主页: 酷酷学!!!#运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带参数的宏的替换列表中。#运算符所执⾏的操作可以理解为”字符串化“。当我们有⼀个变量 int a = 10; 的时候,我们想打印出: the value of a is 10 .

2024-04-20 20:21:44 873 3

原创 C语言代码是怎样生成可执行程序的呢? ---- 编译和链接

正文开始前言: 在ANSI C的任何一种实现中, 存在两个不同的环境, 分别是翻译环境, 和执行环境, 本文将重点介绍翻译环境.抛出疑问:翻译环境是怎么将源代码转换为可执⾏的机器指令的呢?这⾥我们就得展开开讲解⼀下翻译环境所做的事情。其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。一个C语言的项目中可能有多个.c文件一起构建, 那么多个.c文件如何生成可执行程序的呢?如果再把编译器展开成3个过程,那就变成了下面的过程:在预处理阶段, 源文

2024-04-20 11:44:10 1053

原创 深入挖掘C语言 ---- 文件操作

文件操作

2024-04-19 21:59:50 1060 7

原创 深入挖掘C语言 ----动态内存分配

1.栈区(stack): 在执行函数的时候, 函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放, 栈内存分配运算内置于处理器的指令集中,效率很高, 但是分配的内存容量有限, 栈区主要存放运行函数时而分配的局部变量,函数参数, 返回数据, 返回地址等. 这里推荐一本书2.堆区(heap): 一般由程序员分配释放, 若程序员不释放, 程序结束时可能由OS(操作系统)回收,分配方式类似于链表。

2024-04-19 20:37:52 880 14

原创 自定义类型: 联合体和枚举

前言 :书接上文, 下面我将继续详解C语言的剩下两个自定义类型: 联合体和枚举个人主页 : 酷酷学!!!正文开始像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。运行结果:联合的成员是共⽤同⼀块内存空间的,这样⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合⾄少得有能⼒保存最⼤的那个成员)。运行结果:代码1输出的三个

2024-04-17 19:17:45 976 3

原创 自定义类型: 结构体 (详解)

结构体详解

2024-04-16 21:36:34 1406 16

原创 浮点数在内存中的存储

浮点数在内存中的存储 , 浮点数在内存中存的过程 , 浮点数在内存中取的过程

2024-04-15 21:25:48 1244 3

原创 整数在内存中的存储和内存操作函数

整数在内存中的存储,面试题, 内存操作函数总结

2024-04-14 22:26:19 991 1

原创 字符和字符串操作函数总结

字符函数和字符串函数是编程中常用的函数,能够帮助我们处理和操作文本数据,提高程序的灵活性和效率。在实际编程中,灵活运用字符函数和字符串函数可以简化代码逻辑,提高代码的可读性和可维护性.

2024-04-13 22:15:45 992 18

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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