自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉搜索树(Binary Search Tree)

它或者是一棵,或者是具有以下性质的二叉树:1. 非空左子树的所有键值小于其根节点的键值;2. 非空右子树的所有键值大于其根节点的键值;3. 左右子树也分别为二叉搜索树。二叉搜索树一般不支持key值冗余(不允许有重复的key值);二叉搜索树的性质使搜索时非常方便高效,最多搜索高度次O(logN)(二叉树退化为O(N),需要二叉搜索树平衡,使用AVL树或者红黑树);二叉搜索树的中序遍历能够对key进行排序。

2024-09-18 00:02:18 655

原创 二叉树的前中后序遍历(非递归迭代实现)

前序遍历的顺序是根-左子树-右子树,所以首先从根节点开始,顺着访问左子树:1、2、4。此时,还剩下节点1、节点2、节点3的右子树没有访问。后面倒着访问节点1、2、4的右子树就行了。所以非递归的前序遍历是这样处理的:把一棵二叉树分为两个部分:1、左路节点;2、左路节点的右子树。如下图所示:对于每一棵右子树,也是同样划分为这两个部分进行处理。如何倒着取处理左路节点的右子树?我们可以借助栈来处理左路节点的右子树。以上图中的树为例,从根节点1开始,依次访问。

2024-09-16 12:50:29 908

原创 STL容器适配器之priority_queue的基本用法及模拟实现

heap并不归属于STL容器组件,priority_queue允许用户以任何次序将任何元素推入容器中,但取出时一定是从优先权最高(也就是数值最高)的元素开始取。大根堆正是具有这样的特性,适合作为priority_queue底层机制。关于完全二叉树以及堆的详细介绍可以参考二叉树详解堆的介绍这两篇文章。堆(heap)是一种特殊的额完全二叉树,它满足下面的性质:(1)堆是一个完全二叉树,这意味着除了最后一层外,每一层都是完全填满的,而最后一层的节点则京可能的集中在左边。(2)

2024-09-09 23:36:53 889

原创 STL容器适配器之stack、queue的基本用法及模拟实现

本文中实现的MyQueue类是一个泛型队列,使用模板参数T来指定队列元素的类型,而模板参数Container来指定底层容器的类型,它默认为std::deque<T>,但也可以被替换为其他类型如std::list或std::vector。基于容器C++STL中的std::stack是一个容器适配器,它不是一个独立的数据结构,而是构建在其他容器之上的。默认情况下,std::stack使用std::deque作为其底层容器,但是也可以选择使用std::vector、std::list等其他容器来作为底层支持。

2024-09-04 23:03:04 595

原创 二叉树详解

堆的概念及结构、堆的实现以及堆的应用可参考文章关于堆的介绍。

2024-09-02 19:47:41 1002

原创 栈和队列的实现

/栈内的数据类型为int类型//定义一个动态数组int _top;//栈顶下标//数组的容量}Stack;

2024-08-25 11:38:59 574

原创 关于堆的介绍

int _size;}Heap;(1)Top-K问题的定义求出一组数据中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。比如:专业前10名、世界500强、富豪榜等。我们以求n个数据中前K个最大的元素为例进行说明:(假设n=10000、K=10)。(2)解决Top-K问题的思路①排序法(不推荐使用)对于Top-K问题,能想到的最简单直接的方法就是排序,我们可以把这个10000个数据排成降序,然后逐个取前10个数就是最大的10个数。

2024-08-15 22:48:34 972

原创 STL序列式容器之list的使用及实现

std::list 和 std::vector 是两种不同的数据结构,std::vector 是基于数组的动态数组,而 std::list 是基于双向链表的数据结构。list适用于需要在序列中频繁执行插入和删除操作的场景。

2024-08-03 22:24:57 1022

原创 数据结构之带头双向循环链表

/指向下一个结点//指向上一个结点//结点中存储的数据}ListNode;

2024-07-24 22:19:35 804

原创 数据结构之无头单向非循环链表

我们是使用一个结构来定义无头单向非循环链表的基本结构,如下所示,该结构体包括数据域和指针域两个部分。//链表的结点}ListNode;

2024-07-24 21:52:54 438

原创 vector的模拟实现

MyVector 类包含了构造函数、析构函数、拷贝构造函数、拷贝赋值操作符、添加元素、获取元素个数、获取容量、访问元素的功能。

2024-07-15 22:00:00 688

原创 STL库序列式容器之vector的工作原理及基本用法

是一个动态数组,它在内存中以连续的块存储元素。与静态数组相比允许在运行时动态调整大小,而无需手动管理内存。

2024-07-10 21:50:59 831

原创 C++中产生临时对象的情况及其解决方案

C++中三种常见的临时对象创建的情况:(1)以值传递的方式给函数传参;(2)类型转换;(3)函数需要返回对象时。

2024-05-27 23:30:37 1437

原创 数据结构之顺序表

在介绍顺序表之前,我们先介绍线性表。线性表 ( linear list ) 是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。也就是说顺序表是线性表顺序存储结构中的一种。

2024-04-27 13:57:14 1330 1

原创 只出现一次的数字(三种情况)

在介绍只出现一次的数字之前,先介绍一下消失的数字这个题目,数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?[3,0,1]28思路:该题要求在O(n)时间内完成,使用遍历方法的时间复杂度是O(n^2),不符合题目要求。假设数组int nums[]={0,1,2,3,4,5,6,7,9},中间缺了数字8,先使用num=0与数组中所有元素做异或运算,然后将运算的结果再与[0,N]中的元素挨个做异或运算,得到的结果就是那个消失的数字。

2024-04-01 22:28:06 741 1

原创 位运算之左移(<< )

移位操作符的操作数只能是整数。

2024-03-26 22:31:22 1737

原创 名字的作用域

名字sum定义于main函数所限定的作用域之内,从声明sum开始直到main函数结束为止都可以访问它,但是出了main函数所在的块就无法访问了,因此说变量sum拥有。无论在程序的什么位置,使用到的每个名字都会指向一个特定的实体:变量、函数、类型等。然而,同一个名字如果出现在程序的不同位置,也可能指向的是不同的实体。作用域中一旦声明了某个名字,它所嵌套着的所有作用域中都能访问该名字。同一个名字在不同的作用域中可能指向不同的实体。名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端为结束。

2024-01-21 11:58:39 393 1

原创 序列中删除指定数字

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。数据范围:序列长度和序列中的值都满足1≤n≤50。输入描述:第一行输入一个整数(0<N≤50)。第二行输入N个整数,输入用空格分隔的N个整数。第三行输入想要进行删除的一个整数。输出描述:输出为一行,删除指定数字之后的序列。

2023-11-26 21:19:27 46 1

原创 冒泡排序(上)

改代码执行的结果依然为:9 8 7 6 5 4 3 2 1 0。冒泡排序的核心思想是两个相邻元素进行比较。冒泡排序的一个典型错误。

2023-11-19 21:47:27 42 1

原创 计算一个数的每位之和(递归实现)

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和。例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。该题要求使用递归函数实现,思路。

2023-11-18 22:19:17 43 1

原创 使用递归函数实现字符串反转

编写一个函数reverse(char * string)(递归实现)实现:将参数字符串中的字符反向排列,不是逆序打印。要求:不能使用c函数库中的字符串操作函数。

2023-11-18 21:22:10 165 1

原创 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己输入

【代码】实现一个函数,打印乘法口诀表,口诀表的行数和列数自己输入。

2023-11-16 23:42:48 66 1

原创 在屏幕上输出9*9乘法口诀表

【代码】在屏幕上输出9*9乘法口诀表。

2023-11-16 22:27:04 68

原创 求10个整数中最大值

方法2:假设第一个值最大,将其他值与第一个值进行比较。方法1:将相邻的两个数将进行比较。

2023-11-16 21:54:16 417

原创 【无标题】

则时间复杂度为O(N2),即取阶数最高的那项。如果N2前面有系数,则系数也去掉,如F(N)=2N2+2*N+10,则时间复杂度为O(N2)。算法的时间复杂度是一个函数,算法的时间复杂度算的不是时间,算的是程序执行的大概次数。随着N的增大,对F(N)的值影响最大的N2,即阶数最高的那项对结果的影响最大。大O符号(Big O notation ):是用于描述函数渐进行为的数学符号。Func1执行的基本操作次数:F(N)=N2+2*N+10;请计算一下Func1基本操作执行了多少次?

2023-11-13 20:58:43 24

空空如也

空空如也

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

TA关注的人

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