数据结构
qq_43573743
这个作者很懒,什么都没留下…
展开
-
直接插入排序
// #include <iostream>// using namespace std;// class Sort// {// public:// Sort(int a[], int n)// {// length = n+1;// for (int i = 0; i <n; i++)// ...原创 2019-12-30 13:06:45 · 162 阅读 · 0 评论 -
归并排序基本操作
#include <bits/stdc++.h>using namespace std;class Sort{public: Sort(int a[],int n); //两个相邻子序列的合并 void MergeSort(int first,int last); void pp() { for(int i=0;...原创 2019-12-30 13:04:36 · 213 阅读 · 0 评论 -
折半查找
#include<iostream>#include<cstdio>using namespace std;class Sort{public: Sort(int a[],int n); int BinSearch1(int low,int high,int k); int BinSearch2(int k);private: in...原创 2019-12-30 13:03:43 · 121 阅读 · 0 评论 -
快速排序
#include <iostream>using namespace std;/*1、选择轴值Partition(int first,int last)2、通过递归进行排序void QuickSort();*/class Sort{public: Sort(int a[], int n); //快速排序 void QuickSort(int ...原创 2019-12-30 13:06:02 · 152 阅读 · 0 评论 -
顺序查找
#include <iostream>using namespace std;const int N=100;//template <typename T>class linkList{public: linkList(int a[],int n) { length=n; for(int i=1;i<=n;i...原创 2019-12-30 12:47:37 · 108 阅读 · 0 评论 -
二叉排序树
#include <iostream>using namespace std;//template <class DataType>struct BiNode{// DataType data; int data; BiNode *lchild, *rchild;};class BiSortTree {public:...原创 2019-12-30 12:46:22 · 256 阅读 · 0 评论 -
统计树中节点、叶子节点个数、统计树的高度、二叉树左右子树的交换
描述要求:1.采用二叉链表的方式进行存储2.构造一个二叉树类实现以下算法:1.统计树中节点个数2.统计树中叶子节点个数3.统计树的高度4.二叉树左右子树的交换输入扩展的前序序列.在一棵树处理结束后,根据响应判断是否处理下一棵树输出按要求输出信息(节点个数,叶子节点个数,二叉树的高度,交换之后的前序遍历)样例输入abc####Yab##c##N样例输出313...原创 2019-12-29 18:35:17 · 1533 阅读 · 2 评论 -
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列
描述输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。输入输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。输出输出文件为tree.out,仅一行,表示树的后序遍历序列。样例输入abdecdbeanc样例输出debca// 思路:// 前序序列的第一个值是根节点,将中序序列分成两部分...原创 2019-12-29 10:51:46 · 14750 阅读 · 0 评论 -
最优二叉树
叶子结点的权值:给叶子节点一个有意义的数值带权路径长度:从根节点到各个叶子节点的路径长度和叶子结点的权值乘积之和 WPL最优二叉树:带权路径长度最小的二叉树,也成为哈夫曼树思路:权值越大的叶子节点越远离根节点,且不存在度为1的节点哈夫曼树:给定一组具有确定权值的叶子结点,带权路径长度最小的二叉树哈夫曼树的特点:权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。只有度...原创 2019-12-02 21:53:26 · 1718 阅读 · 0 评论 -
图存储结构概念
一、是否可以采用顺序存储结构存储图图是由两部分组成的,顶点和边。存储时,顶点由一维数组存储,边可以由二维数组存储,也可以由链表存储。二、邻接矩阵图的邻接矩阵存储也称为数组表示法,用一个一维数组存储图中的顶点,用一个二维数组存储图中的边。设G有n个顶点,则邻接矩阵是一个n*n的方阵.若两个顶点之间有边,则矩阵中的相对应的元素极为1,否则为0.三、邻接表...原创 2019-12-02 21:26:53 · 276 阅读 · 0 评论 -
邻接表
基本结构const int MaxSize=10; //图的最大顶点数template <class T>class ALGraph{ public: ALGraph(T a[ ], int n, int e); ~ALGraph; void DFSTraverse(int v); ...原创 2019-12-02 21:14:12 · 115 阅读 · 0 评论 -
图的邻接矩阵存储
邻接矩阵中图的基本操作——构造函数确定图的顶点个数和边的个数;输入顶点信息存储在一维数组vertex中;初始化邻接矩阵;依次输入每条边存储在邻接矩阵arc中;4.1 输入边依附的两个顶点的序号i, j;4.2 将邻接矩阵的第i行第j列的元素值置为1;4.3 将邻接矩阵的第j行第i列的元素值置为1template <class T>MGraph::MGraph(T a[...原创 2019-12-02 20:47:10 · 459 阅读 · 0 评论 -
二叉排序树
二叉排序树有两种情况:1、空的二叉树2、具有下列性质:a、若左子树不空,左子树的所有节点小于根结点b、若右子树不空,右子树所有节点大于根结点左右子树也是二叉排序树...原创 2019-12-02 10:54:42 · 139 阅读 · 0 评论 -
二叉排序树代码实现
struct BiNode{ int data; BiNode *lchild, *rchild;};class BiSortTree{public: BiSortTree(int a[ ], int n); //建立查找集合a[n]的二叉排序树 ~ BiSortTree( ) { Release(root); //析构函数,...原创 2019-12-02 18:48:43 · 273 阅读 · 0 评论 -
双链表
#include <iostream>#include <algorithm>using namespace std;struct node{ int data; node *last,*next;};class doublel{public: //双链表的构造函数(非空的链表,输入数据为0,表示输入结束) doublel(int a[],...原创 2019-11-30 10:19:42 · 73 阅读 · 0 评论 -
二叉树的基本实现
二叉树的构造前序遍历中序遍历后序遍历`#include<bits/stdc++.h>using namespace std;template struct BiNode{T data;BiNode *lchild, *rchild;};template class BiTree{public:BiTree();void PreOrder() { ...原创 2019-11-12 09:18:42 · 106 阅读 · 0 评论 -
数组和字符串
串长度:串中所包含的字符个数。空串:长度为0的串,记为:" "。子串:串中任意个连续的字符组成的子序列。主串:包含子串的串。子串的位置:子串的第一个字符在主串中的序号2.串的存储结构顺序串:用数组来存储串中的字符序列链接串:用链接存储结构来存储串。3.模式匹配给定主串S="s1s2…sn"和模式T=“t1t2…tm”,在S中寻找T 的过程称为模式匹配。基本思想:从主串S的第...原创 2019-11-12 07:01:24 · 88 阅读 · 0 评论 -
树的基本定义
定义:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:⑴ 有且仅有一个特定的称为根的结点;⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。结点的度:结点所拥有的子树的个数。树的度:树中各结点度的最大值。叶子结点:度为0的结点,也称为终端结点。分...原创 2019-11-12 00:39:55 · 337 阅读 · 0 评论 -
顺序栈的基本操作
顺序栈类的声明const int MAX_SIZE=100;template <class T>class seqStack{ public: seqStack ( ) ; ~seqStack ( ); void Push ( T x ); T Pop ( ); T Ge...原创 2019-11-12 00:17:22 · 188 阅读 · 0 评论 -
线性表之单链表
template <typename T>struct Node { T data; Node<T> *next; //此处<T>也可以省略}; 头结点:如果链表有头节点,则链式结构中的第一个节点称为头结点:其数据域可以存储一些附加信息,如链表长度;其指针域指向链表中的第一个节点。单链表的实现template ...原创 2019-11-11 23:54:26 · 111 阅读 · 0 评论 -
线性表的顺序存储
数据元素的个数定义为线性表的长度。长度等于零时成为空表,一个非空表通常记为L=(a1,a2,…,an) 其中,a[i-1]是a[i]的前驱,a[i+1]是a[i]的后继原创 2019-11-11 23:18:03 · 113 阅读 · 0 评论 -
二叉树
描述输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。输入输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。输出输出文件为tree.out,仅一行,表示树的后序遍历序列。样例输入abdecdbeac样例输出debca#include<iostream>#include<...原创 2019-11-30 10:15:00 · 105 阅读 · 0 评论 -
最优二叉树
叶子结点的权值:给叶子节点一个有意义的数值带权路径长度:从根节点到各个叶子节点的路径长度和叶子结点的权值乘积之和 WPL最优二叉树:带权路径长度最小的二叉树,也成为哈夫曼树思路:权值越大的叶子节点越远离根节点,且不存在度为1的节点...原创 2019-11-30 10:13:40 · 1618 阅读 · 0 评论 -
二叉链表
#include <iostream>using namespace std;//template <typename T>struct BiNode{ char data; BiNode *lchild,*rchild;};//template <typename T>class BiTree{public: BiTr...原创 2019-11-29 11:57:39 · 351 阅读 · 0 评论 -
二叉树的逻辑结构
一、定义1、每一个节点的度不超过22、严格区分左右子树二、特殊的二叉树1、斜树2、满二叉树叶子节点只出现在最后一层3、完全二叉树叶子节点只出现在最后一层和倒数第二层如果有度唯一的节点,只能有一个满二叉树一定是完全二叉树三、二叉树的性质四、根据序列判断二叉树的序列...原创 2019-11-28 21:57:06 · 1343 阅读 · 0 评论 -
树的存储结构
一、树的表示方法1、双亲表示法struct node{ int data;//节点数据 int parent;//父节点在数组中的下标};2、孩子表示法由两部分组成1、表头形成的循序表,存放节点数据和第一个孩子的地址2、孩子链表。有此节点的孩子节点组成的单链表struct CTNode{ int data; CTNode *next;};...原创 2019-11-28 21:41:11 · 84 阅读 · 0 评论 -
顺序表的存储结构(复习)
#include <iostream>using namespace std;const int maxsize=100;class list{ public: list(int a[],int n); void insertx(int i,int x); int deletex(int i); int get(int x); in...原创 2019-11-22 19:58:53 · 210 阅读 · 0 评论