自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【平衡二叉树的平衡调整-----------理论】

根据平衡二叉树的定义,平衡二叉树上所有结点的平衡因子只能是以下三种情况-1:结点左子树的高度小于结点右子树的高度0:结点左子树的高度等于结点右子树的高度1:结点左子树的高度大于结点右子树的高度。

2024-10-15 17:30:03 1595 2

原创 【树表的相关查找算法】-----二叉排序树

返回值:查找成功返回指向该结点的指针,否则返回NULL参数:T是二叉排序树的指向根结点的指针,key是要查找的关键字参数:参数:T 是指向二叉排序树的根结点指针的 二级指针注意递归调用时,使用(*T)的地址 即&(*T)(1)递归终止条件:如果当前树节点为空 (*T 为 NULL),则返回 false,表示没有找到待删除的关键字或树本身为空。(2)(2.1)如果待删除的关键字 key 大于当前节点的关键字,则递归到当前节点的右子树进行删除。

2024-10-08 09:36:44 123 2

原创 【查找算法概念】与【线性表的相关查找算法】

以查找21成功为实例:中点值大于key,缩短上半区间中间值小于key,缩短下半区间找到key值以非递减有序排列。

2024-10-07 17:46:09 1189

原创 【STL】priority_queue 基础,应用与操作

/ 定义一个存储 int 类型的优先级队列(默认最大堆)默认情况下,priority_queue 是一个最大堆,但可以通过自定义比较器将其变为最小堆。通过指定比较函数,可以改变元素的排列顺序。priority_queue 是C++ STL中一个强大的容器适配器,**用于处理需要频繁访问优先级最高(或最低)元素的场景。**通过了解其基本操作、自定义排序规则以及底层实现机制,开发者可以更加灵活地应用它来解决各类优先级相关的问题。不过,也要注意其一些限制,如无法直接遍历和修改元素优先级。

2024-09-19 20:56:21 918 1

原创 【STL】string 基础,应用与操作

STL(标准模板库)中的string容器是C++标准库提供的用于处理和操作字符串的类,位于头文件中。std::string提供了比传统的C风格字符串(字符数组)更方便和安全的功能,具有动态内存管理、丰富的操作函数和良好的兼容性。std::string可以自动调整其大小,允许存储任意长度的字符串。它会根据需要分配内存,并在需要时扩展,不需要程序员手动管理内存。这种特性大大降低了内存管理的复杂性,避免了手动管理C风格字符串可能导致的缓冲区溢出问题。// 自动扩展内存以存储更长的字符串。

2024-09-19 20:27:31 1323

原创 【STL】stack,deque,queue 基础,应用与操作

stack(栈)栈是一种后进先出(LIFO, Last In First Out)的数据结构,意味着最后插入的数据最先被移除。C++ 中的栈是通过容器适配器实现的,底层默认使用 deque(双端队列)来实现,也可以选择 vector 或 list 作为底层容器。数据结构:后进先出(LIFO,Last In First Out),意味着最后插入的元素最先被移除。底层实现:stack 是一个容器适配器,默认底层使用 deque 实现,可以替换为 vector 或 list。

2024-09-19 16:33:55 1205

原创 【STL】vector 基础,应用与操作

vector 是一种动态数组,它能够根据需要自动调整自身的大小。它允许快速随机访问,并且能在末尾进行高效的插入和删除操作。支持随机访问,时间复杂度为 O(1)。动态分配内存,自动扩展存储空间。插入和删除操作在末尾处效率最高。for_each();创建临时 vector:创建一个新的临时 vector,它仅分配了与 vec.size() 相同的内存(即刚好能存储当前的元素),而不保留多余的空间。swap() 交换内部结构。

2024-09-19 11:15:30 1338 3

原创 【STL】pair 与 map:基础、操作与应用

pair 是 C++ 标准库中的一种数据结构,它允许我们将两个不同类型的数据组合成一对。它的典型用法是用来返回两个相关联的值,例如姓名和电话号码。每个 pair 包含两个值,这两个值分别可以通过 .first 和 .second 访问。map 是 C++ 中的一种关联容器,通常用于存储键值对。每个元素都是 pair,其中第一个元素为 键(key),第二个元素为 值(value)。map 容器的特点是:所有元素会根据 键 的大小自动排序,并且 键值唯一。如果需要允许重复键,可以使用 multimap。

2024-09-17 17:07:20 1498

原创 【STL】 set 与 multiset:基础、操作与应用

如果需要按自定义顺序排序 set 中的元素,可以通过传入自定义的比较器来改变排序方式。例如,可以使用 greater 来实现降序排列,或者提供自定义的比较函数。print2(s);// 输出:30 20 10。

2024-09-16 21:58:09 1753

原创 【C++知识扫盲】------初识命名空间

是用于访问 C++ 标准库符号的前缀,避免命名冲突。虽简化了代码,但在复杂项目中可能引发命名冲突。可以选择只引入特定符号,以在代码简洁和命名空间安全之间取得平衡。

2024-09-16 14:38:41 212

原创 【C++知识扫盲】-----初识迭代器

迭代器是一种抽象的指针类型,它使得你可以遍历容器中的元素而不需要知道容器的具体实现细节。迭代器可以用来访问容器中的元素、移动位置、比较位置等。

2024-09-14 22:14:17 285

原创 【C++知识扫盲】------C++ 遍历方法与 auto 关键字

传统 for 循环:适用于有索引的容器。range-based for 循环:简洁且适用于所有标准容器。迭代器遍历:适用于需要灵活控制的遍历。

2024-09-14 21:02:00 535

原创 【C++知识扫盲】------C++ 中的引用入门

引用本质上是某个变量的别名。在此例中,print 函数通过常量引用避免拷贝 std::string,但同时保证字符串不会被修改。注意:不要返回局部变量的引用,因为局部变量在函数返回后被销毁,引用将指向无效内存,导致未定义行为。在此例中,getMax 函数返回两个参数中较大值的引用,允许我们修改这个值。在这个例子中,swap 函数使用引用交换两个变量的值,而无需创建副本。常量引用常用于函数参数传递,保证传入的对象不会被修改,同时避免拷贝。引用在使用时不需要解引用,而指针需要使用 * 来访问指针指向的值。

2024-09-14 21:01:05 509

原创 【二叉树遍历算法应用】------补录

但要复制成的新树,应传入结点指针的地址,即二级指针,因为要修改结点指针的值(指向新开辟的结点空间):原本存在的树只是会遍历,不会被修改,故传入一级指针。:只进行遍历,不会修改树的结构,故传入一级指针。

2024-09-14 15:08:24 917

原创 【遍历二叉树】---先,中,后,层序遍历 及 先序建立整树

int10。

2024-09-13 22:50:36 1353 3

原创 【二叉树的性质与存储结构】

(2)通过存储表中的序号进行元素填入,得到对应的二叉树。(深度为k,每一层上至少有1个结点,总共k个结点)(如果1个结点都没有,就不可能有这么多层了)(1)先画出对应深度的满二叉树,并标号。结点按层序编号(从第。

2024-09-11 19:49:17 1148

原创 【树和二叉树的相关定义】概念

(1)二叉树的结构最简单,规律性最强;(2)可以证明,所有树都能转为唯一对应的二又树,不失一般性。(3)普通树(多又树)若不转化为二叉树,则运算很难实现二叉树在树结构的应用中起着非常重要的作用,因为对二又的许多操作算法简单,而任何树都可以与二叉树相互转换,这样就解决了树的存储结构及其运算中存在的复杂性。每个结点最多有俩孩子(二叉树中不存在度大于2 的结点)子树有左右之分,其次序不能颠倒。二叉树可以是空集合,根可以有空的左子树或空的右子树。

2024-09-10 22:21:33 566

原创 【数组与广义表】(基本概念与思路)

COL每一列间的前驱后继关系:如a00** 在列上的后继为a10ROW每一行间的前驱后继关系:如a00在行上的后继为a01。

2024-09-10 19:41:14 750

原创 串的模式匹配算法

确定中所含第一次出现的位置(

2024-09-09 15:03:14 1144

原创 【串】比较常见的操作-------静态数组实现

用sub返回串s的第pos个字符起长度为len的子串。:传入空串Sub的指针,因为要在函数中往其中添加元素。

2024-09-07 10:57:57 306

原创 【串的相关概念】

注意这里的字符是任意字符:包括特殊字符和空格1.这里注意:index:即字符串的定位操作十分重要(若主串S存在与串T值相同的子串,则返回它在主串S中第一次出现的位置。

2024-09-05 20:07:32 1119

原创 备忘录1【java环境变量手动更改】

B站视屏链接:https://www.bilibili.com/video/BV1cV8BeCESA?

2024-09-03 01:10:14 333

原创 【栈经典问题剖析】上

【代码】【栈经典问题剖析】上。

2024-09-01 19:46:38 305

原创 【链式队列的实现】

一个完整的链式队列包含头指针,尾指针,头结点,一般结点这四个部分//<1>队列结点结构定义//队结点数据域,用来存储队列元素//队结点指针域,用来指向下一个队结点//QNode: 链队列结点类型,用来定义队结点//QNodePtr: 链队列结点指针类型,用来定义队结点指针//<2>队列链式定义//定义链队的头指针,尾指针}LinkQueue;//LinkQueue:通过LinkQueue定义链队列;通过 定义出的链队列 访问队列的头指针,尾指针。

2024-08-31 15:53:30 953

原创 【循环顺序队的实现】

先进先出的线性表在顺序队列中,我们使用头指针front指向队首元素;用尾指针rear指向队尾元素的下一个位置(当然这里的指针是用下标模拟出来的同时顺序队列中的元素当然是用数组来存储的抽象数据类型如下注意这里的传参,本篇使用指针传参,与图中c++的引用有所区别。

2024-08-29 18:29:55 1123

原创 【栈与递归】-------简单了解

若一个对象部分地包含它自己或用它自己给自己定义,则称这个对象是递归的例如:链表的结构树的结构等等若一个过程直接地或间接地调用自己,则称这个过程是递归的过程。递归求n的阶乘1.能将一个问题转变成一个新问题,而新问题与原问题的解法相同或类同不同的仅是处理的对象,且这些处理对象是变化有规律的2.可以通过上述转化而使问题简化3.必须有一个明确的递归出口,或称递归的边界。

2024-08-26 21:16:38 462

原创 【两栈共享空间】------一种特殊的顺序栈

虽然顺序栈的存储已经十分方便,但是它有一个非常致命的缺陷:即必须事先确定数组存储空间的大小,万一不够用就需要动态扩容但对于两个相同类型的栈,我们可以做到最大限度的利用其事先开辟的存储空间,既让两栈共享空间两个栈共享同一个存储空间,这片空间不单独属于任何一个栈,某个栈需要的多一点,它就可能得到更多的存储空间包括了一号栈 与 二号栈的栈顶指针,以及容纳两个栈中元素的数组//1.共享栈的结构定义int top1;//栈1的栈顶指针(从数组的0开始)int top2;

2024-08-26 19:23:49 1283

原创 【链栈的实现】--------本质为不带头结点的 头插法建立起来的单链表;头指针即栈顶指针

/1.链栈的结构定义://实际上就是运算受限的单链表,只能在链表头部进行操作//StackNode:用来定义单个链栈的结点//*LinkStack:用来定义整个链栈(即链栈的头指针或者栈顶指针)在结构定义中,一个链栈结点里包含了,指针域,和存放栈元素数据域这两个部分而别名StackNode用来定义单个链栈结点LinkStack 用来定义链栈的头指针(栈顶指针)

2024-08-26 14:56:00 1632

原创 【顺序栈的实现2】--------用int类型的top模拟栈顶指针;且top指向栈顶元素

/1.顺序栈的结构(这里使用角标来模拟栈顶指针)//静态数组存放栈中元素,且栈中元素的个数不超过MAXSIZEint top;//角标模拟栈顶指针}SqStack;在结构定义中,一个顺序栈里包含了,栈顶指针,和存放栈元素的静态数组这两个部分而别名SqStack用来定义顺序栈SqStack* 用来表示指向栈的指针。

2024-08-21 17:41:56 1008

原创 【顺序栈的实现1】--------含栈顶,栈底指针;栈顶指针指向栈顶元素的下一个位置

2024-08-20 19:17:49 2143

原创 栈与队列【特殊的线性表】概念

栈(stack)是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表。又称为后进先出(LastIn First Out)的线性表,简称LIFO结构。队列(queue)是一种先进先出(First In First Out ----FIFO)的线性表。在表一端插入(表尾),在另一端(表头)删除队列 是仅在表尾进行插入、表头进行删除操作的线性表表尾(即an端)称为队尾;表头(即a1端)称为对头;栈与队列是两种常用的,重要的数据结构栈和队列是限定插入和删除。

2024-08-20 16:52:33 433

原创 【线性表】--------图书管理系统的单链表实现

引言:学习完链表,让我们实践一下吧,废话不多说直接上代码。

2024-08-19 16:32:33 560

原创 C知识扫盲-------文件结束符(EOF)

当读取操作到达文件末尾时,fgets 会返回 NULL,这可以用于判断文件读取是否结束。在文件操作中,EOF 是 “End of File”(文件结束)的缩写,用于指示文件的结束。当读取操作到达文件末尾时,fscanf 会返回 EOF,这可用于判断读取是否完成。在读取文件时,可能会遇到错误。当到达文件末尾时,fgetc 会返回 EOF,这通常用于结束读取循环。feof 函数用于检查文件指针是否到达文件的末尾。它常与循环结合使用,以确保在读取文件时处理文件结束的情况。,许多文件操作函数会返回这个值。

2024-08-19 16:20:45 1045

原创 C知识扫盲------文件的基本操作

在C语言中,所有的文件操作都是通过文件指针 (FILE*) 来进行的。要对文件进行操作,首先需要用 fopen 函数打开文件,并指定文件的路径和操作模式。filename要打开的文件名(可以包含路径,如 “C:\data\file.txt” 或者 “./file.txt”)。mode文件打开模式,决定了你如何访问文件。

2024-08-19 16:10:26 1376

原创 【线性表】------稀疏多项式加法运算 的 链式实现(带头结点)

多项式中指数由低到高排列每一项的系数非零的多项式//系数int expen;//指数//指针域//Polynomial:多项的与一般的链表结点相同,只不过稀疏多项式结点数据域分为指数和系数两部分。

2024-08-18 15:39:05 1350

原创 【线性表】内容总结

存储密度是指结点数据本身所占的存储量和整个结点结构中所占的存储量之比(1)定义三个临时指针://pa用来遍历La//pb用来遍历Lb//pc用来遍历新链表Lc的每个结点(2)初始化pa,pb分别指向La,Lb的首元结点,pc指向新链表的头结点//新链表的头结点可以是La的头结点,也可以是Lb的头结点(3)依次从 La 或 Lb 中摘取元素值较小的结点插入到 Lc 表的最后,直至其中一个表变空为止(4)插入剩余段(注意释放没用的头结点)pa : pb;等价于if(pa!

2024-08-17 11:16:06 1023

原创 线性表【双向循环链表基本定义与操作】(带头结点)

双向循环链表的结构与双向链表完全一致,不同之处在于它的尾结点的next指针指向头结点,而头结点的prior指针指向尾结点,从而形成一个循环。//1.双向循环链表的结构定义(与双向链表完全一致)// 数据域//前驱和后继指针//HNode * 用来定义结点指针//HLinkList 用来定义链表指针。

2024-08-14 16:01:29 1377

原创 线性表【双向链表基本定义与操作】(带头结点)

该结点前驱元素的next域指向自己;后继元素的prior域指向自己在双向链表中有些操作(如:ListLength、GetElem,ClearList,Destroy等),因仅涉及一个方向的指针,故它们的算法与单链表的相同。但在插入、删除时,则需同时修改两个方向上的指针,两者的操作的时间复杂度均为 O(n)。//1.双向链表的结构定义多一个指向前驱的指针域// 数据域//前驱和后继指针//DNode * 用来定义结点指针//DLinkList 用来定义链表指针。

2024-08-12 21:29:22 771

原创 线性表【单循环链表的实现】(带头结点,带头尾指针)

图解如下:单循环链表为空表时:其头结点的next域指向它自己,即头结点next等于头指针与单链表的结构定义完全一致int01//1.单循环链表的结构定义不变//数据域//指针域//LNode *用来定义结点指针;//LinkHead 用来定义头指针;//LinkTail 用来定义尾指针;

2024-08-10 20:22:56 1570

原创 C知识扫盲------悬挂指针及其处理方法

悬挂指针(Dangling Pointer)是指向已经释放或不再有效的内存区域的指针。这种指针虽然仍然持有原来的内存地址,但那块内存已经被释放或重新分配给其他对象。悬挂指针问题是内存管理中的一个常见问题,可能会导致程序崩溃、未定义行为或数据损坏。在某些情况下,局部变量的内存区域在函数返回后不会立即被操作系统回收或重用。这意味着,尽管该内存区域理论上已不再有效,但它的内容可能在一段时间内保持不变,因此程序仍然可以读取到旧的值。即使这样,读取这些值依然属于未定义行为。

2024-08-06 20:17:45 690

空空如也

空空如也

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

TA关注的人

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