![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 72
fyh508
这个作者很懒,什么都没留下…
展开
-
二维数组的动态存储(遍历方阵,求各元素的和)
#define _CRT_SECURE_NO_WARNINGS #includeusing namespace std;int **InitialArray(int row,int column) //动态创建数组并初始化{int **matrix = new int *[row]; // 申请row个整型指针的一维数组 int i,j,n=1; f原创 2017-05-12 22:32:11 · 858 阅读 · 0 评论 -
单链表(合并单链表)
链式结构由于每个结点只有一个指向直接后继的指针域,因此当访问过一个结点后,只能接着访问它的后继结点,而无法访问它的前驱结点,这样的单项链表称为单向链表。 单链表遍历: 单链表遍历是从单链表头指针head开始访问,沿着next指针所指示的方向依次访问每一个结点,且每个结点只能访问依次,直到最后一个结点为止。遍历时注意,不要改变head指针的指向。因此一般设置另外的一个指针变量原创 2017-04-25 22:26:22 · 814 阅读 · 1 评论 -
什么是树?及相关术语?
树的定义:树是n(n>0)个有限数据元素的集合。当n=0时,称这棵树为空树。树的特点:1.树的根结点没有前驱结点,除根结点之外的所有结点有且只有一个前驱结点。2.树中所有结点可以有0个或多个后继结点3.树中没有封闭的环存在。因为如果存在封闭环,则至少有一个结点将有大于一个的前驱结点树的相关术语:结点的度:结点所拥有子树的个数称为该结点的度叶子结点:度原创 2017-05-18 16:57:38 · 479 阅读 · 0 评论 -
什么是二叉树?及二叉树的性质
二叉树的定义: 二叉树是个有限元素的集合,该集合或者为空、或者由一个称为根的元素及俩个不相交的、被分别称为左子树和右子树组成。当集合为空时,称为空二叉树。在二叉树中,一个元素又称作一个结点。 二叉树是有序的,即若将其左、右子树颠倒,就成为另一棵不同的二叉树。即使树中结点只有一颗子树,也要区分是左子树还是右子树。因此二叉树具有5种基本形态。二叉树的性质:原创 2017-05-18 17:26:23 · 1005 阅读 · 0 评论 -
图的定义和术语
图:图是由俩个集合V和E组成,记为G=(V,E),其中V是顶点的有限非空集合,E是V中顶点的边的有限集合。通常,也将图G的顶点集和边集分别为V(G)和E(G)。E(G)可以是空集,若E(G)为空,则图只有顶点而没有边有向图:若图G中每条边都是有方向的,则称G为有向图。在有向图中,一条有向边是由俩个顶点组成的有序对,有序对通常用尖括号表示。有向边也称为弧,起点称为弧尾,终点称为弧头原创 2017-06-19 21:55:04 · 543 阅读 · 0 评论 -
图的表示和实现1(图的矩阵表示法)
邻接矩阵:邻接矩阵是用矩阵来表示顶点之间的相邻关系的一种方法。A[i,j]=1则是图的边。若A[i,j]=0,则不是图的边。若G是网络则A[i,j] = wij; wij表示边上的权值,若A[i,j]=0或无穷则计算机允许的大于所有边上权值的数。邻接矩阵表示带权图类:除了采用二维数组存储用于表示顶点间相邻关系的邻接矩阵外,通常还需要用一个顺序表来存储顶点信息。verte原创 2017-06-19 22:13:37 · 6950 阅读 · 0 评论 -
图的表现和实现2(邻接矩阵表表示法)
邻接表: 顶点表的每个元素存储顶点信息,由俩个域成,data(数据域)和adjlink(与顶点关联的边对应的单链表)边链表中的结点由3个域组成,dest.weight和next,其中dest域根据无向图或者有向图而不同,weight域在非带权图中将被省略。 无向图的邻接表表示: 在边表中,第i行单链表存储所有与顶点vi相关联的边,每个边结点存储从原创 2017-07-05 11:58:20 · 756 阅读 · 0 评论 -
图的广度优先搜索遍历
广度优先搜索遍历的原理:广度优先搜索算法遍历类似于树的按层次遍历。设图G的初态是所有顶点均未访问过,在G中任选一顶点vi为初始出发点,则广度优先搜索的基本思想是:首先访问出发点vi,接着依次访问vi的所有邻接点,再接着访问邻接着的所有未曾访问过的顶点,依次类推,直至图中所有和初始出发点vi有路径相通的顶点都已访问到为止。 图的广度优先搜索遍历的算法: 设vi原创 2017-07-05 12:10:21 · 1265 阅读 · 0 评论 -
图的深度优先遍历
图的深度优先遍历的原理:深度优先搜索遍历类似于树的前序遍历。假设给定图G的初态是所有顶点未曾访问过的,在G中任选一顶点vi为初始出发点,则深度优先搜索可定义如下:首先,访问出发点vi,并将其标记为已访问过,然后,依次从vi出发搜索vi的每一个邻接点vi,若未曾访问过,则以vi的新的出发点继续进行深度优先搜索。 对图进行深度优先搜索遍历时,按访问顶点的先后次序所得到的顶点序列,称为该图的深度优先搜原创 2017-07-05 12:06:57 · 1620 阅读 · 0 评论 -
顺序表(约瑟夫环)
概念:线性表的顺序存储结构称为顺序表,顺序表中的每一种数据类型属于同构,你要知道第一个数据元素的起始地址,就可以计算出其任一元素的地址 lOC(ai)=Loc(a0)+i*c 其中c=sizeof(T) 1.顺序表的各个数据元素的逻辑顺序与其储存的物理顺序一致 2.顺序表的数据元素即可进行顺序访问,也可以进行随机访问 1.三个成员必须是私有属性,防止错误操作引发的错原创 2017-04-25 22:21:50 · 2666 阅读 · 0 评论 -
二叉搜索树
概念:二叉排序树也叫二叉搜索树,1.若它的左子树非空,则左子树上所有结点的值均大于根结点的值。2.若它的右子树非空,则右子树上所有结点的值均大于根结点的值 3.它的左右子树也叫二叉排序树二叉排序树的查找: 二叉排序树中value的结点。1.从根结点开始,设p指向根结点。2.将value与p结点的关键字进行比较,若俩者相等,则查找成功;若value值较小,则在p原创 2017-04-25 22:17:09 · 273 阅读 · 0 评论 -
二叉线索树
二叉树的定义: 由于在二叉树的链式存储结构中,每个结点存储了指向其左右孩子结点的链,而没有存储指向某种线索性次序下的前驱或者后继结点的链。当需要获得结点在一种遍历序列中的前驱或者后继结点时。有俩中解决方案: (1)再进行一次遍历,寻找前驱或后继结点。这需要花费较多的时间,效率较低。 (2)采用多重链表结构,每个结点增加俩条链,分别指向前驱和后继结点。需要花费较多的原创 2017-05-24 21:58:52 · 1714 阅读 · 0 评论 -
二叉树的查找、二叉树高度、二叉树获得双亲结点、构造二叉树、二叉树的广义表表示法、二叉树的插入删除、二叉树的非递归实现
二叉树的查找:#include#include"DoubleNode.h" //双链表结点类#include"SeqStack.h" //顺序栈#include"LinkedStack.h" //链式栈#include"SeqQueue.h" //顺序循环队列using namespace std;template原创 2017-05-19 23:44:05 · 1464 阅读 · 0 评论 -
二叉树的遍历
先序遍历:1.访问根结点 2.先序遍历根结点的左子树 3.先序遍历根结点的右子树中序遍历:1.中序遍历根结点的左子树 2.访问根结点 3.中序遍历根结点的右子树后序遍历: 1.后序遍历根结点的左子树 2.后序遍历根结点的右子树 3.访问根结点 二叉树的顺序存储结构: 二叉树的顺序存储结构是用一组连续的存储单元存原创 2017-05-18 21:41:23 · 517 阅读 · 0 评论 -
树的存储结构,及链表实现
树的存储结构: 孩子链表:在一颗度为K的树中,若一个结点x已有k个孩子,再插入一个结点作为x的孩子,由于孩子链已满,需要扩充,对于只支持静态数组的程序设计语言,则不能实现此种情况下的插入操作。C++语言提供动态数组,若将孩子的结点域children设计为一个可变长顺序表,则可实现插入操作的扩充功能。 有时占用较多存储空间。若树有n个结点,度为k,总链数原创 2017-05-18 17:02:01 · 1981 阅读 · 0 评论 -
矩阵的实现(矩阵相加)
#include using namespace std;class Matrix{private:int rows,columns; //矩阵行数列数int **element; //动态二维数组void InitiaMatrix(int rows,int columns); //申请并初始化指定行数列数的空矩阵public:Matrix(int rows=4原创 2017-05-15 17:37:00 · 5132 阅读 · 0 评论 -
顺序队列(循环队列)+链式队列+打印杨辉三角
概念:队列是限定只能在表的一端进行插入在另一端进行删除操作。在表中,允许插入的一端称为“队列尾”,允许删除的另一端称为“对列尾”顺序队列: 定义:概念:队列的顺序存储结构为顺序队列,顺序队列实际上是运算受限的顺序表 顺序队列的表示:1.和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素原创 2017-05-07 11:30:43 · 2354 阅读 · 0 评论 -
栈实现迷宫
栈的类型定义:栈是一种特殊的线性表,限定只能在表的一端进行插入和删除操作的线性表。在表中,允许插入删除的一端称为“栈顶”,不允许插入删除的另一端称为“栈底”,没有元素的栈称为空栈,插入元素称为入栈,删除元素称为出栈,称为先进后出。 顺序栈类型的定义:顺序栈的存储方式是数组,需要事先为他分配一个可容纳最多元素的存储空间,“栈顶指针”意为指示栈顶元素在栈中的位置,在栈的长度已原创 2017-05-03 18:53:02 · 586 阅读 · 0 评论 -
串(Bruet-Force算法)
串的顺序存储: 概念:顺序串是用一组地址连续的存储单元来存储串中的字符序列,顺序串具有随机存取功能,缺点是插入删除元素时需要移动串中的有关元素 1.串空间的大小在编译时就已经确定,是静态的。难以适应插入、链接等操作 2.除了直接使用定长的字符数组存放串内容外,一般使用一个不会出现在串中的特殊字符放在串值的末尾来表示串的结束。所以串空间最大值为n时,最多只能放n-1个字符,所以原创 2017-04-27 12:09:53 · 526 阅读 · 0 评论 -
生成树和最小生成树
树:在图中,常常将树定义为一个无回路连通的无向图。只选定图中某个顶点做根,以树根为起点对每条边定向,就能将他们变成通常的树。树中悬挂的顶点称为树叶,其他顶点称为分支点,一个非连通图,如果它的各个连通分量都是树,则这种非连通图称为森林。树是森林的特殊情况,树中无回路,因此树中必然没有自身环也无重边,否则就出现回路不是树了。 生成树和生成森林: 生成树:连通图的一个子图如果是一棵包含所有顶原创 2017-07-05 12:20:34 · 1135 阅读 · 0 评论