数据结构
学习数据结构得过程
vrerain
学生一枚
个人博客: vrerain.website
展开
-
AVL树及其基本操作
本文是介绍AVL树及其插入操作。1 AVL简介AVL树是一种特殊的BST树,特殊的地方在于,左右子树高度的绝对值不超过一,所以在构建AVL树的时候,需要调整,以保证平衡。AVL树的作用与BST树是一样的,主要用于快速查找。2 树的结构class Tree<T extends Comparable<T>> { private static final int MAX_HEIGHT_DIFFERENCE = 1; private Node<T> roo原创 2020-06-27 18:38:55 · 555 阅读 · 0 评论 -
二叉排序树
本文介绍了二叉排序树最基本的三种操作查找,插入和删除。文章目录1 查找2 插入3 删除4 全部代码1 查找#include<bits/stdc++.h>using namespace std;typedef int dataType;typedef struct BitNode{ dataType data; struct BitNode *lChild, *rChild;}BitNode, *BitTree;int SearchBST(BitTree t,原创 2020-06-19 10:21:18 · 198 阅读 · 0 评论 -
基于广度优先搜索的六度空间理论的验证
本文是记录数据结构习题解析与实验指导的课后实验八------基于广度优先搜索的六度空间理论的验证。1 实验内容问题描述“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如下图所示。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这原创 2020-06-19 08:27:57 · 5596 阅读 · 1 评论 -
基于Dijsktra算法的最短路径求解
本文是记录数据结构习题解析与实验指导的课后实验七------基于Dijsktra算法的最短路径求解。文章目录1 实验内容2 基本思路3 全部代码1 实验内容描述一张地图包括n个城市,假设城市间有m条路径(有向图),每条路径的长度已知。给定地图的一个起点城市和终点城市,利用Dijsktra算法求出起点到终点之间的最短路径。输入多组数据,每组数据有m+3行。第一行为两个整数n和m,分别代表城市个数n和路径条数m。第二行有n个字符,代表每个城市的名字。第三行到第m+2行每行有两个字符a和b和一个整数d原创 2020-06-08 16:22:41 · 2751 阅读 · 5 评论 -
树的相关题目
本文记录了自己做的关于树的四道题目。文章目录1 统计二叉树的叶结点个数2 自底向上的层次遍历3 树有多深4 二叉树的中序遍历1 统计二叉树的叶结点个数统计二叉树的叶结点个数【问题描述】以二叉链表作为二叉树的存储结构, 统计二叉树的叶结点个数。【输入形式】一行字符序列(限定大写字母为结点元素,#代表空树)。【输出形式】数字,代表叶结点个数。【样例输入】ABC##DE#G##F###【样例输出】3样例以先序遍历的顺序建立二叉链表后统计叶子结点个数。#include<iostream&原创 2020-06-08 12:14:41 · 972 阅读 · 4 评论 -
图论----生成树
本文介绍了图中最小生成树的两种算法----Prim算法和Kruskal算法Prim算法原创 2020-06-05 11:40:12 · 437 阅读 · 0 评论 -
图论----最短路径
本文紧接着上一篇文章,介绍图的两种最短路径算法----迪杰斯特拉算法和弗洛伊德算法。文章目录DijkstraFloydDijkstra迪杰斯特拉是求单源最短路径的一种算法。它运用的是贪心的思想。#include<stdio.h>typedef int EdgeType;typedef char VertexType;#define MAXVEX 100#define INFINITY 65535typedef struct{ VertexType vexs[MAXV原创 2020-06-04 10:33:30 · 303 阅读 · 0 评论 -
图论----搜索
本文介绍了图论的存储结构,及两种搜索方式,即DFS和BFS.DFS#include<stdio.h>typedef int EdgeType;typedef char VertexType;#define MAXVEX 100#define INFINITY 65535int visited[MAXVEX];typedef struct{ VertexType vexs[MAXVEX]; EdgeType arc[MAXVEX][MAXVEX]; in原创 2020-06-03 12:55:44 · 277 阅读 · 0 评论 -
基于二叉树的表达式求值算法
本文记录数据结构习题解析与实验指导(李冬梅)的课后实验六------基于二叉树的表达式求值算法1 实验内容没有找到实验的文字版本,只能把实验书的图片放上来了????2 基本思路其实思路和中缀算术表达式求值这篇文章是一样的。两个栈,一个存操作符,一个存结果,只不过这次存结果的栈要改成存树。于是入栈就要改成这样:遇到数字:if (data[i] >= '0' && data[i] <= '9') { Tree t = new Tree(); t.ans原创 2020-05-27 13:25:13 · 7174 阅读 · 0 评论 -
基于哈夫曼树的数据压缩算法简单实现
本文是记录数据结构习题解析与实验指导的课后实验五—基于哈夫曼树的数据压缩算法。文章目录1 实验内容2 基本思路3 数据结构代码实现4 全部代码1 实验内容描述输入一串字符串,根据给定的字符串中字符出现的频率建立相应哈夫曼树,构造哈夫曼编码表,在此基础上可以对待压缩文件进行压缩(即编码),同时可以对压缩后的二进制编码文件进行解压(即译码)。输入多组数据,每组数据一行,为一个字符串(只考虑26个小写字母即可)。当输入字符串为“0”时,输入结束。输出每组数据输出2n+3行(n为输入串中字符类别的个原创 2020-05-26 12:24:18 · 3868 阅读 · 0 评论 -
广义表的存储及比较
本文记录了关于广义表的存储,以及比较两个广义表是否相等的一个题目。1 题目描述【问题描述】请写出判断两个广义表是否相等的递归算法,如果两个广义表相等,则输出1,否则输出0。如A=((a)),B=((a)),则A=B,输出1。要求输入的广义表采用链式存储结构存储,并基于链式存储结构编写递归函数。【输入形式】输入为由原子元素(数字,字符)、逗号、圆括号组成的广义表。先输入一个广义表,回车后再输入一个广义表。【输出形式】数字1,或者0。【样例输入】((a),b)((a),b)【样例输出】1原创 2020-05-21 12:01:14 · 1549 阅读 · 1 评论 -
蛇形矩阵的创建
这是记录我做的一道关于蛇形矩阵的文章1题目描述【问题描述】将1,2,…,n*n个自然数,按蛇形方式存放在二维数组A[n][n]中。“蛇型”方式,即是按“副对角线”平行的各对角线,从左下到右上,再从右上到左下,存放n2个整数。例如:1 3 42 5 86 7 9【输入形式】 输入数组的阶数n。【输出形式】 打印数据元素按蛇形排列的数组,整数打印的域宽为4。【样例输入】3【样例输出】1 3 42 5 86 7 9【样例说明】矩阵的阶数为3,打印按蛇形存放原创 2020-05-19 10:35:27 · 1566 阅读 · 0 评论 -
基于kmp字符串模式配算法的病毒感染检测问题
本文记录了数据结构习题解析与实验指导(李冬梅)的实验4。以下是实验内容1问题描述医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知它们的DNA序列都是环状的。现在研究者已收集了大量的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒。为了方便研究,研究者将人的DNA和病毒DNA均表示成由一些字母组成的字符序列,然后检测某种病毒DNA序列是否在患者的DNA序列中出现过。如果出现过,则此人感染了该病毒,否则没有感染。例如,假设病毒的DNA序列为baa,患者1的DNA序列为aaabb原创 2020-05-19 08:54:26 · 4937 阅读 · 0 评论 -
基于栈的后缀算术表达式求值
本篇文章主要是记录数据结构习题解析与实验指导(李冬梅)的课后实验三。这次实验是利用后缀表达式来进行算术表达式求值,上篇博文介绍的是利用中缀表达式来进行算术表达式的求值。而这次实验是利用中缀表达式转换为后缀表达式,然后再利用后缀表达式进行求值。(之所以要转换为后缀表达式,是因为使用后缀表达式进行求值非常简单)1 基本思想...原创 2020-05-16 15:46:13 · 1270 阅读 · 0 评论 -
中缀算术表达式求值
这是记录数据结构习题解析与实验指导(李冬梅)实验二的一篇博文,具体内容就是给个中缀算术表达式,然后进行求值。中缀算术表达式的求值方式有很多种,我学的有两种,一种就是用两个栈进行求解,也就是本文中所讲的,一种就是先转换为后缀表达式,然后后缀表达式通过一个栈进行求解,这是下一篇博文所要讲的。我所知道的还有一种方法,是利用树来进行算术表达式的求解。因为还没学,所以暂时先不写相应的博文。...原创 2020-05-16 12:10:41 · 1109 阅读 · 0 评论 -
栈和队列的基本结构
本文主要是介绍一下栈和队列,其中包括顺序栈,双栈,链栈,循环队列,链队的结构和相关操作的实现。文章目录顺序栈双栈链栈队列顺序栈1.基本结构:#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef int ElemType;typedef struct{ ElemType data[MAXSIZE]; int top;}SqStack;2.初始化操作:void InitStac原创 2020-05-09 16:51:45 · 373 阅读 · 0 评论 -
数据结构实验--基于线性表的图书信息管理系统
本文是依据数据结构习题解析与实验指导(李冬梅)一书中的第一个实验–基于线性表的图书信息管理系统所写的。之所以写这个,是因为这个实验不仅涉及到线性表的结构设计,还包括一些线性表的基本操作,个人认为,做完这个实验,基本上对线性表就有一个基本的了解的。本文采用编程语言为C先说一下题目简介,自己设计一张图书信息表,包括以下10项常用的基本操作:图书信息表的创建和输出、排序、修改、逆序村春、最贵图书的...原创 2020-04-30 10:34:43 · 14865 阅读 · 6 评论