![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法基础
文章平均质量分 62
草莓摇摇奶昔-
努力学习C++
展开
-
华为 2022_09_07 笔试题复盘
华为笔试题复盘原创 2022-09-08 10:45:11 · 1890 阅读 · 7 评论 -
亚控笔试题复盘
桌面上有n张纸牌,每张纸牌的正反两面各写着一个整数,初始时正面朝上。现在要求你翻动最少的纸牌,使得朝上的数字中最少有一半的数字是相同的,或判断无解。原创 2022-08-22 18:36:27 · 495 阅读 · 1 评论 -
数据库 -跳跃表与B+树
B+树是多叉平衡搜索树,只需要3层左右就能存放2kw左右的数据,同样情况下跳表则需要24层左右,假设层高对应磁盘IO,那么B+树的读性能会比跳表要好,因此mysql选了B+树做索引。redis的读写全在内存里进行操作,不涉及磁盘IO,同时跳表实现简单,相比B+树、AVL树、少了旋转树结构的开销,因此redis使用跳表来实现ZSET,而不是树结构。转载 2022-05-03 21:47:01 · 3070 阅读 · 2 评论 -
C++实现排序算法
插入排序基本思想每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。即边插入边排序,保证子序列中随时都是排好序的。基本操作在有序序列中插入一个元素,保持序列有序,有序长度不断增加。 起初,a[0]是长度为1的子序列。然后逐一将a[1]至a[n-1]插入到有序子序列中。 在插入a[i]前,数组a的前半段(a[0]-a[i-1])是有序段,后半段(a[i]-a[n-1])是停留与输入次序的 “无序段”。 插入a[i]使a[0]-a[i-原创 2021-11-01 22:12:41 · 732 阅读 · 0 评论 -
哈夫曼树的构造算法
哈夫曼算法根据 个给定的权值构成棵二叉树的森林,其中只有一个带权为的根节点。(构造森林全是根) 在中选取两颗根节点的权值最小的树作为左右子树,构造一颗新的二叉树,且设置新的二叉树的根节点的权值为其左右子树上根节点的权值之和。(选用两小造新树) 在中删除这两棵树,同时将新得到的二叉树加入森林中。(删除两小添新人) 重复步骤 2 和步骤 3,知道森林中只有一棵树为止,这棵树即为哈夫曼树。(重复2、3剩单根)C++实现#include <iostream>...原创 2021-10-14 13:07:43 · 3052 阅读 · 3 评论 -
C++实现二叉树的创建及遍历
二叉树的结点类class Node{public: Node() = default; Node(int data) : _data(data), _lchild(nullptr), _rchild(nullptr) {};原创 2021-10-08 20:58:54 · 5813 阅读 · 1 评论 -
数据结构 - - 两个非空链表做加法(力扣题两数相加)
题目描述:给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0开头。解题思路一开始的想法一开始我想的是以短的链表为基准,第一个while循环停止条件为其中一个链表加完了,然后再去考虑另一个链表的剩余部分和进位做加法,如果没有进位就提前结束了,这样还要再判断是哪一个链表先空了,有些繁琐。遇到的问题最开...原创 2021-09-22 10:52:10 · 1996 阅读 · 3 评论 -
串的模式匹配算法
目录算法目的算法应用算法种类BF算法代码实现运行结果算法目的确定主串中所含子串(模式串)第一次出现的位置(定位)算法应用搜索引擎,拼写检查,语言翻译,数据压缩等。算法种类BF算法(Brute-Force,又称古典的、经典的、朴素的、穷举的) KMP算法(特点:速度快)BF算法算法的思路是从S的每一个字符开始依次与T的字符进行匹配,采用穷举法的思路。如图,为主串的指向,为子串的指向,当匹配失败是,和需要进行回溯,规则如下:即...原创 2021-09-16 00:01:21 · 1318 阅读 · 2 评论 -
C++实现一个简单的顺序队列
队列相关概念定义只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插!!)实现方式有顺序队和链队两种,以循环队列更常见,所以下面我们实现一个循环队列,需要注意的是,这里的循环仅仅是在逻辑的循环,在实际物理结构上并非循环,这样做是为了解决假溢出的问题。循环队列类的实现#include <iostream>#define MaxQSize 10using namespace std;template <class T>class queue{p原创 2021-09-14 12:40:15 · 735 阅读 · 0 评论 -
C++实现一个简单的链栈
链栈类的实现这个由于比较简单,就直接贴代码了,记录一下自己写过这个~// 结点类template <class T>class Node{public: Node() = default; Node(T data, Node<T>* next) { this->_data = data; this->_next = next; }public: T _data; Node<原创 2021-09-13 20:13:29 · 164 阅读 · 0 评论 -
C++实现一个简单的单链表
C++实现一个简单的单链表带头结点的单链表一些功能介绍结点类单链表类初始化析构函数的实现判断是否为空表销毁单链表清空单链表求单链表的表长获取某个结点的前驱节点获取某个结点的值按值查找在指定的位置插入新结点删除指定位置上的结点打印链表完整代码测试结果带头结点的单链表单链表是线性表的一种,表中的数据元素(也就是常说的结点)在物理存储器中的位置是任意的,也就是说逻辑上相邻的两个数据元素在物理位置上是不一定相邻的,他们之间靠一个指针绑定在一起。带头结点的单链表可以表示如下:其中L为头指针, 指向头结点,由于原创 2021-09-11 20:43:43 · 2277 阅读 · 1 评论 -
抽象数据类型的表示与实现 -- C++实现一个虚数类及其运算规则
C++实现一个虚数类及其运算规则直接贴代码吧输出结果直接贴代码吧#include <iostream>using namespace std;// 抽象数据类型的表示与实现// 定义虚数及其运算class Complex{friend ostream& operator<<(ostream &cout, const Complex &c);public: // 构造函数 Complex() { t原创 2021-09-07 19:15:47 · 1550 阅读 · 0 评论