<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[weixin_49188222的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/weixin_49188222</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; weixin_49188222]]></copyright><item><title><![CDATA[第102篇 C++数据结构（十二）红黑树的删除]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124861191</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124861191</guid><author>weixin_49188222</author><pubDate>Thu, 19 May 2022 14:14:39 +0800</pubDate><description><![CDATA[第102篇 C++数据结构（十二）红黑树的删除红黑树删除的结点孩子情况红黑树的删除代码实现红黑树删除被删除结点的情况红黑树删除的调整红黑树删除的代码实现红黑树删除总结
红黑树删除的结点孩子情况
红黑树的删除和普通的二叉搜索树的删除时一样的，都是存在三种情况：
1.删除的结点没有孩子，这时这个结点可以直接删除
2.删除的结点有一个孩子，则用孩子的数据来替换掉它的数据，像数组的删除用后面的数据把前面的数据覆盖掉一样，然后删除该结点
3.删除的结点有两个孩子，这种情况可以转成（1），（2）情况，就是找前驱结点或者]]></description><category></category></item><item><title><![CDATA[第101篇 C++数据结构（十一）红黑树的插入]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124735353</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124735353</guid><author>weixin_49188222</author><pubDate>Sun, 15 May 2022 21:56:46 +0800</pubDate><description><![CDATA[红黑树特性
1.结点是黑色或红色

2.根节点是黑色

3.叶子结点是黑色的空结点

4.任意节点到其每个叶子结点的所有路径都包含相同数目的黑色结点

注：黑点都是2（或者算成1也行）。
5.红色结点的父结点和子结点都是黑色结点

红黑树特性推论
1.如果一个结点只有一个孩子，那么该结点的颜色一定是黑色的，且该结点的孩子一定是红色的，如果其是红色或者其孩子是黑色，违反了第4条特性
正确：
错误：

2.如果一个结点没有孩子，那么该结点可能是黑色，也可能是红色

注：如果是红色结点的话，一定有父结点，是黑色结]]></description><category></category></item><item><title><![CDATA[第100篇 C++数据结构（十）AVL树的实现]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124598811</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124598811</guid><author>weixin_49188222</author><pubDate>Sun, 08 May 2022 21:08:46 +0800</pubDate><description><![CDATA[文章目录1.链接2.AVL的树调整2.1.左旋2.2.右旋3.4.5.6.
1.链接
http://t.csdn.cn/ezulx//平衡二叉树
AVL树的介绍网上有很多，这里就不作介绍了，这只说AVL的实现，看了80%的文章都在介绍和说明AVL树，似乎介绍实现的很少，所以尝试写写自己的见解，当然还是借鉴了上面那篇文章的实现。
2.AVL的树调整
AVL的调整主要包括对某棵子树（或整棵树）的左旋和右旋。这两个操作，是针对某两个点执行的，比如下面：

对4和9两个结点进行左旋（逆时针旋转）
2.1.左旋
2.]]></description><category></category></item><item><title><![CDATA[第99篇 C++数据结构（九）散列表]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124539057</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124539057</guid><author>weixin_49188222</author><pubDate>Mon, 02 May 2022 12:28:35 +0800</pubDate><description><![CDATA[第99篇 C++数据结构（九）散列表1.散列表简介1.1.散列函数1.2.散列冲突解决方案2.数据节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出结果5.实现代码6.总结
详细介绍：
大佬文章链接1
大佬文章链接2
1.散列表简介
散列表也叫哈希表（Hash table），是根据关键码值(Key value)而直接进行访问的数据结构。也就是说，它通过把关键码值映射到表中一个位置来访问记录，以加快查找的速度。这个映射函数叫做散列函数，存放记录的数组叫做散列表。
1.1.散列函数
散列函]]></description><category></category></item><item><title><![CDATA[第98篇 C++数据结构（八）图-边集数组实现]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124537340</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124537340</guid><author>weixin_49188222</author><pubDate>Mon, 02 May 2022 10:50:50 +0800</pubDate><description><![CDATA[第98篇 C++数据结构（八）图-边集数组实现1.说明1.1.点1.2.边2.实现2.1.变量2.2.方法3.测试3.1.测试代码3.2.输出结果4.实现代码5.总结
1.说明
个人觉得边集数组实现图是中规中矩的方式，一个图有哪些点，有哪些边，都看得明白清楚，而且逻辑更加清晰，当然有缺点，就是访问比较麻烦，大佬的文章也有说明，在此不一一赘述了。
1.1.点
图里面有顶点，在此定义一个顶点结构体，当然可以换成类的方式，只有一个名称属性和两种构造方式。
template &lt;typename _Vertex]]></description><category></category></item><item><title><![CDATA[第97篇 C++数据结构（七）图-领接表实现]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124533447</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124533447</guid><author>weixin_49188222</author><pubDate>Sun, 01 May 2022 22:16:28 +0800</pubDate><description><![CDATA[第97篇 C++数据结构（七）图-领接表实现1.结构2.实现2.1.变量2.2.方法3.测试3.1.测试代码3.2.输出结果4.实现代码5.总结
图的详细介绍在上一篇大佬的链接处：
1.结构
实现一个领接表的图，设计的结构如下，照着这个结构，想要设计成什么样，自己改一改就行了。
#define MAXVEX 100	//图中顶点数目的最大值
type char VertexType;	//顶点类型应由用户定义
typedef int EdgeType;	//边上的权值类型应由用户定义
/*边表结点*/
ty]]></description><category></category></item><item><title><![CDATA[第96篇 C++数据结构（六）图-领接矩阵实现]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124520824</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124520824</guid><author>weixin_49188222</author><pubDate>Sat, 30 Apr 2022 23:58:23 +0800</pubDate><description><![CDATA[第96篇 C++数据结构（六）图-领接矩阵实现1.图的简介1.1.大佬文章链接2.实现2.1.变量2.2.方法3.测试3.1.测试代码3.2.输出结果4.实现代码5.总结
本篇只是简单的实现，具体图的介绍请看其他博文。
1.图的简介
图(Graph)是由顶点的有穷非空集合 V ( G ) V(G) V(G)和顶点之间边的集合 E ( G ) E(G) E(G)组成，通常表示为: G = ( V , E ) G=(V,E) G=(V,E)，其中， G G G表示个图， V V V是图 G G G中顶点的集合，]]></description><category></category></item><item><title><![CDATA[第95篇 C++数据结构（五）树]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124424040</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124424040</guid><author>weixin_49188222</author><pubDate>Tue, 26 Apr 2022 20:40:31 +0800</pubDate><description><![CDATA[第95篇 C++数据结构（五）树1.树的简介1.1.树的特点1.2.树的相关名词1.3.二叉树2.节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出5.实现代码6.总结
有许多介绍树的博文，这里不做过多的介绍，本文注重于二叉树的相关操作，且实现的相当于是一颗有序二叉树。
1.树的简介
树形结构是一种重要的非线性数据结构。其中树和二叉树最为常用，直观看来树是以分支关系定义的层次结构。树形结构是我们平时比较熟悉的，比如文件夹目录、公司组织关系等。在计算机领域也得到广泛的应用，编译程序就是以]]></description><category></category></item><item><title><![CDATA[第94篇 C++数据结构（四）队列]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124386003</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124386003</guid><author>weixin_49188222</author><pubDate>Sun, 24 Apr 2022 16:50:28 +0800</pubDate><description><![CDATA[第94篇 C++数据结构（四）队列1.队列简介1.队列的存储结构2.节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出结果5.实现代码6.总结
1.队列简介
队列（queue）是只允许在一端进行插入操作，而在另一端进行删除操作的线性表。队列是一种先进先出（First In First Out）的线性表，简称FIFO。允许插入的一端称为队尾，允许删除的一端称为队头。
1.队列的存储结构
（1）数组：队列的顺序实现是指分配一块连续的存储单元存放队列中的元素，并附设两个指针：队头指针 fro]]></description><category></category></item><item><title><![CDATA[第93篇 C++数据结构（三）栈]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124382744</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124382744</guid><author>weixin_49188222</author><pubDate>Sun, 24 Apr 2022 16:14:36 +0800</pubDate><description><![CDATA[第93篇 C++数据结构（三）栈1.栈的简介1.1.入栈1.2.出栈1.3.实现形式2.节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出结果5.实现代码6.总结
栈的详细介绍网上有很多博文，在此不多做说明。
1.栈的简介
栈（stack）又名堆栈，作为一种数据结构，是一种只能在一端进行插入和删除操作的特殊线性表。它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶，相对地，把另一端称为栈底。栈具有先进后出的特性。
1.1.入栈
也称为压栈，往栈里面添]]></description><category></category></item><item><title><![CDATA[第92篇 C++数据结构（二）链表]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124349489</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124349489</guid><author>weixin_49188222</author><pubDate>Fri, 22 Apr 2022 18:40:34 +0800</pubDate><description><![CDATA[第92篇 数据结构（二）链表1.链表简介1.1.链表的分类1.2.链表的优点：1.3.链表的缺点：1.4.节点说明1.5.链表的定义与使用1.6.链表相关操作2.Node节点3.List类3.1.变量3.2.方法3.3.迭代器
本篇主要是说明链表的简单封装，链表的具体介绍一搜一大把，这里就不一一说明，这里主要是链表相关操作的封装实现，代码不复杂，就不作算法介绍了。
1.链表简介
链表是一种通过指针串联在一起的线性结构，每一个节点是又两部分组成，一个是数据域一个是指针域（单向链表：存放指向下一个节点的指针，双]]></description><category></category></item><item><title><![CDATA[第91篇 C++数据结构（一）数组]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/124309378</link><guid>https://blog.csdn.net/weixin_49188222/article/details/124309378</guid><author>weixin_49188222</author><pubDate>Thu, 21 Apr 2022 11:08:07 +0800</pubDate><description><![CDATA[第91篇 数据结构（一）数组1.数组简介1.1.数组的优点：1.2.数组的缺点：1.3.数组的定义与使用1.3.1.一维数组1.3.2.二维数组1.4.数组相关操作2.Array类2.1.变量表2.2.方法表2.3.迭代器2.3.1.变量2.3.2.方法3.测试3.1.构造函数测试3.2.插入测试3.3.删除测试3.4.查找测试3.5.替换测试3.6.反转测试3.7.排序测试3.8.截取测试3.9.遍历测试3.10.连接测试3.11.迭代器测试4.实现代码5.测试代码6.总结
1.数组简介
数组是一个固定长]]></description><category></category></item><item><title><![CDATA[第90篇 LeetCode剑指Offer动态规划（七）最长不包含重复字符的子字符串]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121733404</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121733404</guid><author>weixin_49188222</author><pubDate>Sun, 05 Dec 2021 19:25:54 +0800</pubDate><description><![CDATA[第90篇 LeetCode剑指Offer动态规划（七）最长不包含重复字符的子字符串1.题目描述2.动态规划的解题步骤2.1.dp[i]的定义2.2.递推式2.3.dp初始化和递归函数出口2.4.递归函数2.5.递归改成迭代2.6.迭代优化3.结语
1.题目描述
请从字符串中找出一个最长的不包含重复字符的子字符串，计算该最长子字符串的长度。
示例 1:

输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”，所以其长度为 3。

示例 2:

输入: “bbbbb”
输出:]]></description><category></category></item><item><title><![CDATA[第89篇 LeetCode剑指Offer动态规划（六）把数字翻译成字符串]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121732740</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121732740</guid><author>weixin_49188222</author><pubDate>Sun, 05 Dec 2021 18:57:40 +0800</pubDate><description><![CDATA[第89篇 LeetCode剑指Offer动态规划（六）把数字翻译成字符串1.题目描述2.动态规划的解题步骤2.1.dp[i]的定义2.2.递推式2.3.dp初始化和递归函数出口2.4.递归函数2.5.递归改成迭代2.6.迭代优化3.结语
1.题目描述
给定一个数字，我们按照如下规则把它翻译为字符串：0 翻译成 “a” ，1 翻译成 “b”，……，11 翻译成 “l”，……，25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数，用来计算一个数字有多少种不同的翻译方法。
示例 1:

输入: 122]]></description><category></category></item><item><title><![CDATA[第88篇 LeetCode剑指Offer动态规划（五）礼物的最大值]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121731288</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121731288</guid><author>weixin_49188222</author><pubDate>Sun, 05 Dec 2021 17:59:31 +0800</pubDate><description><![CDATA[第88篇 LeetCode剑指Offer动态规划（五）礼物的最大值1.题目描述2.动态规划的解题步骤2.1.dp[i][j]的定义2.2.递推式2.3.dp初始化和递归函数出口2.4.递归函数2.5.递归改成迭代2.6.迭代优化3.结语
1.题目描述
在一个 m*n 的棋盘的每一格都放有一个礼物，每个礼物都有一定的价值（价值大于 0）。你可以从棋盘的左上角开始拿格子里的礼物，并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值，请计算你最多能拿到多少价值的礼物？
示例 1:

]]></description><category></category></item><item><title><![CDATA[第87篇 LeetCode剑指Offer动态规划（四）连续子数组的最大和]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121730803</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121730803</guid><author>weixin_49188222</author><pubDate>Sun, 05 Dec 2021 16:30:02 +0800</pubDate><description><![CDATA[第87篇 LeetCode剑指Offer动态规划（四）连续子数组的最大和1.题目描述2.动态规划的解题步骤2.1.dp[i]的定义2.2.递推式2.3.dp初始化和递归函数出口2.4.递归函数2.5.递归改成迭代2.6.迭代优化3.结语
1.题目描述
输入一个整型数组，数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
示例1:

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大]]></description><category></category></item><item><title><![CDATA[第86篇 LeetCode剑指Offer动态规划（三）股票的最大利润]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121730143</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121730143</guid><author>weixin_49188222</author><pubDate>Sun, 05 Dec 2021 15:56:45 +0800</pubDate><description><![CDATA[第86篇 LeetCode剑指Offer动态规划（三）股票的最大利润1.题目描述2.动态规划的解题步骤2.1.dp[i]的定义2.2.递推式2.3.dp初始化和递归函数出口2.4.递归函数2.5.递归改成迭代2.6.迭代优化3.结语
1.题目描述
假设把某股票的价格按照时间先后顺序存储在数组中，请问买卖该股票一次可能获得的最大利润是多少？
示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 =]]></description><category></category></item><item><title><![CDATA[第85篇 LeetCode剑指Offer动态规划（二）青蛙跳台阶问题]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121729809</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121729809</guid><author>weixin_49188222</author><pubDate>Sun, 05 Dec 2021 15:25:56 +0800</pubDate><description><![CDATA[`第85篇 LeetCode剑指Offer动态规划（二）青蛙跳台阶问题1.题目描述2.动态规划的解题步骤2.1.dp[i]的定义2.2.递推式2.3.dp初始化和递归函数出口2.4.递归函数2.5.递归改成迭代2.6.迭代优化3.结语
1.题目描述
一只青蛙一次可以跳上1级台阶，也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7（1000000007），如计算初始结果为：1000000008，请返回 1。
示例 1：

输入：n = 2
输出：2

示例 2：

]]></description><category></category></item><item><title><![CDATA[第84篇 LeetCode剑指Offer动态规划（一）斐波那契数列]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121729020</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121729020</guid><author>weixin_49188222</author><pubDate>Sun, 05 Dec 2021 15:07:50 +0800</pubDate><description><![CDATA[第84篇 LeetCode剑指Offer动态规划（一）斐波那契数列1.题目描述2.动态规划的解题步骤2.1.dp[i]的定义2.2.递推式2.3.dp初始化和递归函数出口2.4.递归函数2.5.递归改成迭代2.6.迭代优化3.结语
1.题目描述
写一个函数，输入 n ，求斐波那契（Fibonacci）数列的第 n 项（即 F(N)）。斐波那契数列的定义如下：
F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N &gt; 1.
斐波那契数列由 0 和 1]]></description><category></category></item><item><title><![CDATA[第83篇 Android Studio实现油耗记录App加油耗曲线（三） 活动类修改]]></title><link>https://blog.csdn.net/weixin_49188222/article/details/121611690</link><guid>https://blog.csdn.net/weixin_49188222/article/details/121611690</guid><author>weixin_49188222</author><pubDate>Mon, 29 Nov 2021 15:52:23 +0800</pubDate><description><![CDATA[第83篇 Android Studio实现油耗记录App加油耗曲线（三） 活动类修改1.添加变量2.init()函数内修改3.initListData()函数修改4.添加一个getValue函数5.点击按钮时的修改
1.添加变量
保存数据，以及用于其他改变。
//总的平均油耗、总费用、总加油升数
List&lt;String&gt; allOilConsumption;//总的平均油耗
List&lt;String&gt; allSpent;//总费用
List&lt;String&gt; allOilCo]]></description><category></category></item></channel></rss>