C++
One_castle
这个作者很懒,什么都没留下…
展开
-
基于邻接矩阵存储的图的广度优先搜索遍历算法的实现(附C++实现代码)
广度优先搜索算法(BFS)概念: 广度优先搜素算法(BFS) 的实现类似树的层次遍历,我们在实现他的时候一般借助一个队列来进行实现,利用队列的先进先出的特点来对图进行广度优先搜索算法的实现。具体实现思路:1、 同样,先创建一个visited_BFS标记数组来判断顶点是否已经访问过了,并且初始化visited_BFS数组为false,表示图的所有顶点还没有访问。2、 借助队列来实现广度优先...原创 2020-01-20 17:04:38 · 1996 阅读 · 0 评论 -
基于邻接矩阵存储的图的深度优先搜索(DFS)实现思路以及代码(超级详细)
图深度优先搜索(DFS)深度优先搜索类似于树的前序遍历,而不一样的地方是图的深度优先搜索遍历在遍历的过程中可能会因为图本身的结构原因而反复地访问到一个顶点。这个是不被允许的,所以我们需要对应的解决的方法来针对这个问题。下面是算法实现的主要实现思路:实现深度优先搜索算法我们一般有两种思路:一种是通过递归的方法,一种是借助栈来实现。以下讨论的是借助栈来实现的思路1、首先,由于我们讨论的图结构...原创 2020-01-16 09:59:05 · 1892 阅读 · 0 评论 -
图的邻接表的实现以及各种基本操作(附C++实现代码)
图图的存储形式有很多,例如邻接矩阵,邻接表,多重邻接表,十字链表这里将介绍图的邻接表存储形式:邻接表的实现思想:邻接表的概念我们就不再进行赘述,主要是将实现邻接表的实现思路捋一捋。首先,邻接表存储的基本思想:对于图的每个顶点vi,我们将所有邻接vi的顶点连接成一个单链表,称为顶点vi的边表(对于有向图则称为出边表),所有边表的头指针和存储顶点信息的一维数组构成了顶点表。而邻接表有着两种...原创 2020-01-15 17:00:59 · 4079 阅读 · 0 评论 -
用邻接矩阵存储的图的代码实现(创建、遍历以及各种基本操作)(附C++实现代码)
一、图图的定义: 图G由两个集合E和V组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常用来表示顶点集合和边集合。E(G)可以为空集,如果E(G)为空,说明只有顶点而没有边。二、 图的分类1、有向图: 如果E(G)为有向边的集合,则该图就表示为有向图。2、无向图: 如果E(G)为无向边的集合,则该图就表示为无向图。...原创 2019-12-03 16:43:58 · 3779 阅读 · 2 评论 -
栈的实际应用问题----括号是否匹配问题(附c++代码实现)
题目描述:假设一个字符串中可以包含三种括号:( )[ ]{},且这三种括号可以按任意次序嵌套使用(如:“…[…{…}…[…]…]…(…)” 为合法嵌套, “…[…{… )…[…]…]…(…)”为不合法嵌套)。 编写判别给定表达式中所含括号是否正确配对出现的算法,如果是合法嵌套则返回为true,如果是不符合法嵌套则返回为false。题目分析:其实这个是对栈的一个简单的应用无非就是怎么借助栈...原创 2019-11-20 23:23:32 · 792 阅读 · 0 评论 -
哈夫曼编码的实现(详细思路及c++一步一步代码实现)
哈夫曼编码的两个特殊性质:1、哈夫曼编码是前缀编码。(问:啥是前缀编码? 前缀编码就是在一个编码方案中,任何一个编码度不是其他任何编码的前缀(最左子串),那么这个编码就是前缀编码。)2、哈夫曼编码是最优前缀编码。即对于包括n个字符的数据文件,分别以它们的出现次数为权值来构造哈夫曼树,则利用该树对应的哈夫曼编码对文件进行编码,能使该文件压缩后对应的二进制文件的长度最短。哈夫曼编码的算法实现:...原创 2019-11-20 16:59:40 · 14377 阅读 · 0 评论 -
哈夫曼树的实现(构建、遍历)(附C++详细实现代码)
哈夫曼树带权路径长度: 设二叉树有n个带权值的叶子结点,从根节点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度。哈夫曼树的定义:带权路径长度最小的二叉树(也称最优二叉树)哈夫曼树的构建思路:1、以权值分别为W1,W2...Wn的n各结点,构成n棵二叉树T1,T2,...Tn并组成森林 S={T1,T2,...Tn},其中每棵二叉树 Ti仅有一个权值为 Wi的...原创 2019-11-09 15:59:25 · 9749 阅读 · 3 评论 -
中序线索二叉树(构建,遍历和找前驱后继节点)附c++详细解释代码!
在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化线索化二叉树的本质,实际上是对原始二叉树中的指向为空(NULL)的指针域进行利用,我们让其指向为NULL的指针域指向前驱(左孩子)或者是后继(右孩子),但是我们怎么来辨别是树节点还是指向其前驱还是后继呢?核心思想:我们为每一个树节点增加两...原创 2019-11-08 17:56:53 · 5249 阅读 · 2 评论 -
程序运行时报错 :0xC0000005: 写入位置 0x000000xx 时发生访问冲突的原因
之前在写代码的时候碰到过这个问题:编译通过,但是在程序运行的时候就会停在某一行代码上,提示这个问题:写入位置 0x0000xxxx 时发生访问冲突一看到的反应自然是:我的代码出现越界问题了。在这里总结一下我碰过的问题:1、第一个就是数组或者指针越界问题例如:定义一个数组 int a[10] ,然后你对a[10]进行操作又比如:你对指针进行操作 p -> value ,这个时...原创 2019-11-06 17:32:11 · 8086 阅读 · 0 评论 -
VS写代码的时候出现错误: error LNK1120: 1 个无法解析的外部命令(详细解释)
由于自己写代码的时候,代码编写不规范,经常出现这样的错误:error LNK1120: 1 个无法解析的外部命令。这个问题很常见,产生这个错误的原因是:你的代码含有头文件,但是找不到你头文件中的函数的实现。编译链接时就会报错还有可能有以下情形:你的代码中只含有头文件,把函数声明和实现都放在了头文件(.h)文件中,一般声明放在.h文件,实现放在同名的.cpp文件中。 这种情况一般会通过编译,...原创 2019-11-06 17:16:10 · 17973 阅读 · 2 评论 -
如何实现二叉树的非递归先序、中序、后序遍历(附C++详细实现代码)
二叉树的递归遍历算法是比较容易实现的,那如何实现二叉树的非递归遍历算法呢?总体具体实现思路:1、非递归实现二叉树的遍历我们都借助栈来实现2、借用栈的来实现功能是:我们在进行遍历二叉树的时候,总会先遍历左子树,然后才遍历右子树,借助栈来保存左子树的节点,然后借助栈来从左子树进入右子树。3、然后根据访问根节点的先后顺序来进行具体调整即可。一、我们从非递归实现中序遍历开始讲起: 因为非递归...原创 2019-11-04 16:40:29 · 1026 阅读 · 0 评论 -
线性链表的应用(奇偶链表的另一种形态)代码超级详细
题目描述: 用随机函数生成10个3位整数(100~999),把这些整数存于单链表中,然后读入一个整数,以该值为基准把单链表分割为两部分,所有小于该值的结点排在大于或等于该值的结点之前。题目分析: 这道题十分简单,实现的思路也非常简单实现思路: 题目的意思其实是遍历一条链表,将链表分成以输入的median为标准的这样的链表: 小于value的节点-> 大于value的节点,这样的话、我...原创 2019-11-01 17:16:32 · 345 阅读 · 0 评论 -
链式队列的实现(入队、出队、遍历和反转(翻转))(详细图文讲解反转、翻转)附C++实现
首先先讲一下链式队列的实现思想:链式队列的实现,我们设置一个特殊的节点,这个结点的内容不是值和指向下一个结点的next、而是指向整条队列的队头和队尾的front和rear指针我用的c++实现的(算法不分语言,任何语言都可以实现),我们先定义一个链式队列的普通节点class QueueNode {public: char value;//值 QueueNode* next; Queu...原创 2019-11-01 16:17:17 · 7174 阅读 · 4 评论 -
二叉树的c++基本操作实现(创建、各种遍历、计算深度、节点数、叶子节点数、查找相应节点并且输出)(附C++实现代码)
本文有些递归有些摘自以下链接:点击传送我当时自己在编写代码的时候主要碰到的问题是:对于递归,处于一种一看就会,一写就跪的境界,然后我去找资料理解递归递归有神人总结为以下模板,仅供参考:function recursion(大规模){ if (end_condition) { end; } else { //在将问题转...原创 2019-10-31 19:18:40 · 1685 阅读 · 0 评论 -
链式栈的 C++实现(附c++代码实现)
链式栈的思想和创建一个带头指针的链式线性表的思想非常相似,头指针指向栈顶指针。实现链式栈的创建空栈、入栈、出栈、遍历还有查找 之类的功能可以在理解下面这些代码的思路之后非常容易写出!C++实现代码如下://StackNode.h#pragma once#include<iostream>using namespace std;class StackNode {publ...原创 2019-10-31 12:06:47 · 3504 阅读 · 0 评论 -
如何构建一个顺序栈?(附c++代码实现)
自己创建一个顺序存储的栈结构这里想要强度一点的就是:用模板template来定义一个模板类的格式template <typename T>class 类名定义模板类的函数的格式:template <typename T>函数返回类型 类名<T> :: 函数名{}#pragma once#include<iostream>using ...原创 2019-10-30 23:53:41 · 2886 阅读 · 0 评论