![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 72
LI大大
爱好广泛
展开
-
【数据结构】并查集
并查集: 通过数组来实现的一种将有关系的节点都联系起来的一种搜索结构。 代码实现:#include<iostream>#include<vector>using namespace std;class UnionFindSet{public: UnionFindSet(size_t size) :_n(size) ...原创 2018-04-12 12:31:39 · 225 阅读 · 0 评论 -
【C++】打印日历
在我们的手机或电脑上都有日历,如下图: 如上图的样式我们用代码也可实现,在Linux操作系统中就有这样的命令:cal 一、代码实现:1.首先,1990年1月1号是星期一,我们选这一天做标尺。2.打印指定年份对应的指定月份的日历,我们要先判断这一年是闰年还是平年,然后判断月份,最后求出指定年份的指定月份距1990年1月1号总共多少天。3.根据总天数确定月份,然后打印这...原创 2018-04-10 14:55:51 · 15404 阅读 · 4 评论 -
【数据结构】哈希表(2)
哈希表的讲解: https://blog.csdn.net/lz201788/article/details/79735508以下是哈希表的另外的实现方式:【1.】(不使用vector)【HashTable2.h】#pragma once#include<iostream>#include<string>using namespace std;#...原创 2018-03-31 23:07:06 · 197 阅读 · 0 评论 -
【数据结构】B树的创建
B树也是一种搜索树,二叉搜索树、红黑树、都是动态查找树,典型的二叉搜索结构,查找的时间复杂度和树的高度相关O(log2N)。这些二叉搜索结构有一个共同的缺陷:数据量大,树的高度太高,增大访问磁盘的次数,从而效率低下。想要加速对数据的访问速度: 1.提高I/O的时间 2.降低树的高度——平衡多叉树B树的定义 一棵M阶(M>2)的B树,是一棵平衡的M路平衡搜索树,可以是空树或者满足以下性质:原创 2018-03-19 21:16:30 · 12007 阅读 · 1 评论 -
【C++】String类的实现
1.String类中涉及到了拷贝构造 (1)浅拷贝 浅拷贝就是地址拷贝,拷贝之后与拷贝目标共用同一块空间 String(const String& s){ if (s._pStr == NULL) { return; } _pStr = s._pStr;}浅拷贝存在的问题: 两个指针指向同一块原创 2017-10-16 22:45:34 · 230 阅读 · 1 评论 -
【C++】无头单链表面试题(3)
题目:判断判断链表是否相交,若相交返回交点(假设链表可能带环)分析:根据题目画图,由题目可分解3中情况: 1.带环相交,交点不在环上 2.带环相交,交点在环上 3.不相交 设计函数:1.先判断两条链表是否相交 2.若相交,找出交点并把交点返回;原创 2017-11-11 17:23:24 · 241 阅读 · 0 评论 -
【C++】动态栈的创建
一、什么是栈 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈可以是个容器,并且这个容原创 2017-11-16 21:44:03 · 1109 阅读 · 0 评论 -
【C++】括号匹配问题与逆波兰表达式
一、括号匹配1.输入一组字符,通过函数判断括号是否匹配,这样可以大大提高工作效率。这个函数的作用很大,使用的方面也很多,在Vs中就有这样的功能,当你写代码时,当代码中的括号不匹配时,就会出现下划线,这样就省去了我们自己去找的时间。2.函数的实现:(1)应对 ( , ) , , [ , ] , { , } 这些主要的符号进行处理(2)获取一个字符串用循环语句,一个接一原创 2017-11-16 21:47:03 · 356 阅读 · 0 评论 -
【C++】迷宫的简单实现
写一个简单的迷宫迷宫首先要有地图,我们的地图用一个二维数组表示这个地图很简单,当为1时表示可以走通,当为0时表示走不通代码实现思路:1.送一个能走的起始点2.创建一个栈,每走一步,把走的位置压入栈中3.当四个方向都走不通时,出栈一次,返回上一个位置,并把不通的路标记为4,走过的路标记为2.4.当走出数组且不是起始位置,则该迷宫可走通。代码:(1)迷宫中走原创 2017-11-16 23:09:10 · 1687 阅读 · 1 评论 -
【C++】矩阵的压缩存储,还原,转置
矩阵的格式相当于是一个二维数组,如下图上图就是一个特殊的矩阵,对称矩阵一、对称矩阵对称矩阵中的元素有一定的规律,就是行下标row与列下标col 互换后得到的新坐标的元素与换坐标前的元素相同。因此我们在存放对称矩阵的元素时只需将它的下三角或上三角的元素存储就可以了。我们可以用一个类来管理这个矩阵,用容器vector来存储它的下三角的元素。(vector相当于是一个一维原创 2017-11-25 15:01:27 · 1602 阅读 · 0 评论 -
【数据结构】二叉树
一、什么是二叉树 二叉树 (binary tree) 是另一种树型结构,它的特点是每个结点至多只有二棵子 树 (即二叉树中不存在度大于 2的结点 ),并且,二叉树的子树有左右之分,其次序不能任意颠倒 。 二叉树是一种数据结构 ,是一对多的关系。二、二叉树的创建 第一步:想要构造一颗二叉树首先要创建二叉树的节点,然后将节点按照二叉树的规则连接起来就构成了一颗二叉树。二...原创 2017-12-02 15:13:25 · 799 阅读 · 0 评论 -
【数据结构】线索化二叉树
二叉树虽然是非线性结构,但二叉树的遍历却为二叉树的结点集导出了一个线性序列。对于前、中、后序遍历,出了相应序列的第一个节点和最后一个节点,二叉树的遍历序列中每个结点都有一个前驱和后继结点,但在二叉树中,无法很快的找出按照某种遍历序列该结点的前驱和后继。 普通的二叉树可能存在以下问题:递归遍历有可能导致栈溢出非递归版本有可能降低程序效率想要找到在某种遍历形势下某个结点的前驱或后继比较...原创 2018-03-05 21:31:55 · 289 阅读 · 1 评论 -
【数据结构】搜索结构之AVL树
AVL树———又称平衡二叉树 二插搜索树虽然可以缩短查找效率,但如果数据有序或接近有序二插搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。AVL树概念: 平衡化旋转 如果在一棵原本是平衡的二插搜索树中插入一个新节点,可能造成不平衡,此时必须调整输的结构,使之平衡化。1.左单旋: 插入点位于ptr的右子结点的右子树—-右右 2.右单旋: 插入点位于pt...原创 2018-03-05 22:06:38 · 274 阅读 · 0 评论 -
【数据结构】排序算法
大家熟知的排序方式有冒泡排序、选择排序,这两种排序方式在处理少量数据的排序时比较方便,但当数据量变大时效率明显变低。在此我们引入了新的排序方式比如:插入排序、归并排序、希尔排序、堆排序、快排。1. 插入排序 直接插入排序:适用于数据量少且非常接近有序。(稳定) (1)时间复杂度:最优—–已序—-O(N) / 最差—-逆序—-O(N^2)原创 2018-03-08 12:53:56 · 178 阅读 · 1 评论 -
【数据结构】图的模拟实现(临接矩阵法)
什么是图:图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V , E), 其中顶点集合V={ x| x属于某个数据对象集} 是有穷非空集合;E = {(x,y) | x,y属于V } 或者 E = { (x , y ) | x,y属于V && Path( x , y) }是顶点间关系的有穷集合,也叫做边的集合。(x, y)表示 x 到 y 的一条双向通路,即(x , ...原创 2018-04-20 23:26:20 · 760 阅读 · 0 评论