数据结构
文章平均质量分 52
故吾名初
向来人间好梦,是有始有终。
自己作笔记用,不喜勿喷。
展开
-
【数据结构】(十四)哈夫曼树
【数据结构】(十四)哈夫曼树(一)哈夫曼树说明:带权路径长度最小的算法 == 路径长度(根到此节点的路径长度) x 权值(此结点的值)的总和。(如下图第三颗树的路径长度最短为哈夫曼树)(二)基本思想:步奏如下:先初始化一个W,随后找其中最小的两个结点连接起来形成树,再将W中的最小两个节点删除,最后将所形成的树放入数组。然后继续重复此操作:在重复找最小的两颗树合并:(三)算法结构:...原创 2021-06-02 19:32:05 · 646 阅读 · 0 评论 -
【数据结构】(十三)二叉树遍历的非递归算法,以及C++Stack容器的用法
二叉树遍历的非递归算法(一)前序遍历的非递归算法:动画演示4:08在这里插入代码片(二)中序遍历(只不过改了输出的位置,其他不变):将输出改在POP弹出栈的位置,意思就是所弹出栈的结点即为输出结点。![在这里插入代码片(三)后序遍历的非递归算法:...原创 2021-05-25 16:20:18 · 232 阅读 · 0 评论 -
【数据结构】(十二)树与森林与二叉树的转化
【数据结构】(十二)树与森林的转化(一)一颗树的转化形式:如果将右指针指向自己的兄弟,做指针指向孩子,则下图左边的树转化为右边树的形式。右边的树化成结构如下图:(二)树转换成二叉树:1.关系:2. 树转化为二叉树的方法:删除线之后:顺时针转动后:检验:两者的前序遍历结果一样:(证明转换成功如下图)(三)森林转换二叉树:利用(二)先将树转换成二叉树后一棵树的根节点作为前一棵树的右子树:(四)二叉树转森林或树:重点理解第一步:(五)森林的遍历:.原创 2021-05-20 16:00:49 · 233 阅读 · 0 评论 -
【数据结构】(十一)二叉树的创建,线索二叉树
【数据结构】(十一)二叉树的创建(懒猫老师代码)(一)说明:创建二叉树还是需要用到二叉树的遍历:为什么要有返回值,是因为:返回值是数节点与节点相连的的桥梁,如果不返回则,建立的结点之间不相连,就构不成数了。(二)第二种方法:...原创 2021-05-20 13:02:30 · 450 阅读 · 0 评论 -
【数据结构】(十)二叉树的(前中后)序遍历, 算法+代码
【数据结构】(十)二叉树的遍历(一)说明:中序遍历左中右,有左子树就一直访问下去,直到没有返回根,然后右子树,之后一层层向上回溯。原创 2021-05-06 21:00:40 · 331 阅读 · 3 评论 -
【数据结构】(九)(二叉)树的逻辑,性质,存储结构
【数据结构】(八)树的逻辑存储结构(一)树的定义:注意两点:不重合不交叉。树的术语:与线性表比较:(二)树的遍历:前序遍历:2. 后序遍历:(相当于从右向左写出前序遍历的树,写答案是时也是从左到右写)层序遍历:(从上到下,从左到右)(三)树的存储结构:1. 双亲表示法:重点:firstchild(此节点第一个孩子的节点),rightchild(此节点对应的紧邻的兄弟节点):(-1表示查无此人,结束)首先讲解创建:A~I输入表,之后找A的第一个原创 2021-04-22 13:23:39 · 585 阅读 · 1 评论 -
【数据结构】(八)稀疏矩阵的加法和乘法运算(代码)
稀疏矩阵的加法和乘法运算上节学了类的友元,这节开始矩阵加法和乘法运算:(一)加法:在这里插入代码片在这里插入代码片原创 2021-04-16 18:57:44 · 2695 阅读 · 1 评论 -
【数据结构】(七)矩阵的压缩存储,C++类的友元
矩阵的压缩存储所有的矩阵你都可以通过推导得出其在一位数组或者链表中的关系。(一).对称矩阵压缩:(二)下三角和上三角矩阵:解释: 下三角矩阵在后面加一个C表示为0即可,只要算到上三角空白区域就去C中的值。(三)对角矩阵:(四)稀疏矩阵的压缩存储:引入三元组:行号, 列号, 非零元素值:利用顺序存储方式:可以用结构体也可用类封装:(五)十字链表:适用于十字链表需要频繁修改的时候含义:图解:C++类定义:在这里插入代码片在这里插入代码片在这里插入代原创 2021-04-16 13:01:27 · 270 阅读 · 0 评论 -
【数据结构】(六)字符串匹配(BF算法,KMP算法),和C++有关string的类用法
【数据结构】(六)字符串匹配(BF算法)(一)记录串长的三种方法:1.2.3.(二)模式匹配:BF算法:i遇到不匹配的时候要回溯,回溯时就是 i= i-j+1,正好到达下一个位置。代码:(BF算法)#include<iostream>using namespace std;#include<string>int BF(char M[], char N[]){ int i=0, j=0; while (M[i] != '\0' &原创 2021-04-15 19:56:35 · 406 阅读 · 0 评论 -
【数据结构】(五)(循环)队列,链式队列(银行排队(离散事件模拟)算法)
【数据结构】(五)队列,链式队列(银行排队算法)(一)队列:(如果用循环将使算法时间变得复杂,所以为了提高运算效率,引入队列)(1)假溢出:(为了解决假溢出,引入循环队列)(2)循环队列:(判断空满条件)其中方法二:(3)队列的创建:(所有的引用修改都是为了可以传出去而使用的)C++:C语言:(4)操作:入队:出队:在主函数中输出item:改为C++中语句:读取对头元素:(二)链式队列:C++:(2)区别:(三)银行排队(离散事件模拟)原创 2021-04-09 19:56:02 · 1938 阅读 · 0 评论 -
【数据结构】(四)栈和递归(汉诺塔问题,八皇后问题)
【数据结构】(四)栈和递归(汉诺塔问题)举例一个简单的的递归问题:(一)汉诺塔说明:分部解释:汉诺塔问题代码:#include <stdio.h>void move(char c1, char c2){ printf("%c-->%c\n", c1, c2);}void hannoi(int n, char x, char y, char z) //不断进行递归调用,调用自身{ if (n == 1) { move(x, z); } e原创 2021-04-02 09:11:24 · 236 阅读 · 0 评论 -
【数据结构】(三)栈堆的应用(DFS算法:迷宫问题)(动态二维数组的创建,nullsptr指针)
【数据结构】顺序栈习题(表达式求值)(1)预习作业:查表:(2)实现作业:(二)迷宫问题(重点):讲解思路:(line和col表示移动后新坐标)原创 2021-03-25 20:53:55 · 385 阅读 · 0 评论 -
【数据结构】(三)顺序栈(用异常捕获优化顺序栈,类模板实现顺序栈,两栈共享存储空间,栈的链式存储结构)
【数据结构】(三)顺序栈(用异常捕获优化顺序栈)(一)异常处理的三种情况(以及执行流程):注意:(异常出现情况):(二)C++中异常类的使用:定义:异常内部类相比上次头文件的程序多异常类:分文件如下:#include "Stack.h" //**两种构造方法**//Stack::Stack() //初始化栈 无参构造大小为Max——SIZE{ size = MAX_SIZE; top = -1; data = new char[MAX_SIZE原创 2021-03-24 20:38:09 · 267 阅读 · 0 评论 -
【数据结构】(二)顺序栈(讲解和习题建立运用讲解)
【数据结构】(二)栈栈的概念:上溢和下溢:(2). 定义:·C++定义方法:初始化:C语言版本:(3). 抽象数据类型的定义:思考完成: ret退了一格t ,peatabc退三格变peat,合起来变repeat.(如下图)...原创 2021-03-23 13:59:36 · 375 阅读 · 0 评论 -
【数据结构】(一)线性表,链表(先图讲解算法,后代码展现思路)
标题链表的插入操作:创建链表:修正:下图解释,创建一个节点吧数组数据35存进来,然后把节点放到rear的下一项,再把指针rear给移动到node节点现在项,准备下一次插入。原创 2021-03-12 14:34:24 · 195 阅读 · 0 评论 -
【数据结构(一)】(链表习题)约瑟夫环问题(多种解法)
【数据结构(一)】(链表习题)约瑟夫环问题(一).约瑟夫环问题:方法一:解:#include <stdio.h>#include <malloc.h>struct node{ int data; //存猴子编号 struct node* next; //指向node或者另外一个节点};int main(){ int n, m; //n猴子的个数,m报数数到m退出 int i; int answer[100]; //answer保存每次的答原创 2021-03-14 20:52:56 · 810 阅读 · 0 评论