数据结构
文章平均质量分 88
常见的数据结构的实现,如:线性表,链表,栈,队列,广义表,二叉树等等
Galactus_hao
蒟蒻
展开
-
图的遍历方法和图的几个典型算法
图的遍历方法和图的几个典型算法图的遍历遍历定义——从已给的连通图中某一顶点出发,沿着一边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。遍历实质——找每个顶点的邻接点的过程。图的特点——图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回了曾经访问过的顶点。怎样避免重复解决思路——设置辅助数组 visited[n]visited[n]visited[n],用来标记没个被访问过的顶点。初始状态vi原创 2021-08-30 15:37:34 · 4114 阅读 · 0 评论 -
图的基本概念和存储结构
图的基本结构和存储结构回顾:图的基本概念图的定义和术语图:G=(V,E) V:顶点(数据元素)的有穷非空集合 E:边的有穷集合无向图——每条边都是无方向的有向图——每条边都是有方向的完全图——任意两个点都有一条边相连无向完全图——n个顶点,有n(n−1)/2n(n-1)/2n(n−1)/2条边有向完全图——n个顶点,有n(n−1)n(n-1)n(n−1)条边稀疏图——有很少边的弧的图(e<nlogn)稠密图——有较多边或弧的图网——边/弧带权的图邻接——有边原创 2021-08-26 15:40:49 · 235 阅读 · 0 评论 -
哈夫曼树及其应用
哈夫曼树及其应用哈夫曼树的基本概念及特点又称最优二叉树路径——从树中一个结点到另一结点之间的分支构成这两个结点间的路径。结点的路径长度——两结点间路径上的分支数。例子:树的路径路径长度——从根到每一个结点的路径长度之和。记作:TL例子:结点数目相同的二叉树中,完全二叉树是路径长度最短的二叉树(充分条件)权(weight)——将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度——从根结点到该结点之间路径长度与该结点的权的乘积。树的带权原创 2021-08-23 19:26:13 · 3202 阅读 · 0 评论 -
树、森林与二叉树的相互转换
树和森林与二叉树定义树:树(Tree)是n(n≥0)n(n≥0)n(n≥0)个结点的有限集。若n=0n=0n=0,称为空树若n>0n>0n>0(1)有且仅有一个特定的称为根(Root)的结点 (2)其余结点可分为m(m≥0)个互不相交的有限集T1,T2,T3,...,TmT_1,T_2,T_3,...,T_mT1,T2,T3,...,Tm森林:是m(m≥0)m(m≥0)m(m≥0)棵互不相交的树的集合树的存储结构双亲表示法实现:定义结构数组,存放原创 2021-08-21 17:21:51 · 279 阅读 · 0 评论 -
遍历二叉树和线索二叉树
遍历二叉树和线索二叉树遍历二叉树遍历定义顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次(又称周游)。遍历目的——得到树中所有结点的一个线性排列。遍历用途——它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。遍历方法——依次遍历二叉树中的三个组成部分,便是遍历了整个二叉树假设:L:遍历左子树,D:访问根结点,R:遍历右子树则遍历整个二叉树方案共有:DLR、LDR、LRD、DRL、RDL、RLD六种。规定先左原创 2021-08-21 17:16:19 · 676 阅读 · 0 评论 -
树与二叉树
树和二叉树前瞻:定义树的定义树(Tree)(Tree)(Tree)是n(n≥0)n(n≥0)n(n≥0)个结点的有限集。若n=0n=0n=0,称为空树若n>0n>0n>0,则它满足如下两个条件:(1)有且仅有一个特定的称为根(Root)(Root)(Root)的结点;(2)其余结点可分为m(m≥0)个互不相交的有限集T1,T2,T3,⋅⋅⋅TmT_1,T_2,T_3,···T_mT1,T2,T3,⋅⋅⋅Tm,其中每一个集合本身又是一棵树,并称为根的子树原创 2021-08-19 22:53:27 · 363 阅读 · 0 评论 -
串、数组、广义表(详细)
串、数组、广义表串串的定义和特点定义零个或多个任意字符组成的有限序列有关术语子串:一个串中任意个连续字符串组成的子序列(含空串)真子串:指不包含自身的所有子串主串:包含子串的串相应地称为主串字符位置:字符在序列中的序号为该字符在串中的位置子串位置:子串第一个字符在主串中的位置空格串:有一个或多个空格组成的串串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相等串的操作串的存储串中元素逻辑关系与线性表相同,可以采用顺序和链式串的顺序存储结构(数组原创 2021-08-16 20:51:02 · 1384 阅读 · 0 评论 -
栈和队列的定义和实现(详细)
栈和队列的定义和实现栈和队列的定义和特点栈和队列是限定插入和删除只能在表的“端点”进行的线性表是线性表的特殊情况栈栈的示意图栈的应用数值转换、表达式求值括号匹配、八皇后问题行编译程序、函数调用迷宫问题、递归调用的实现栈的定义栈是限定仅在表尾进行插入和删除操作的线性表栈的相关概念1.定义:限定只能在表的一端进行插入和删除运算的线性表(只能在栈顶操作)2.逻辑结构:与线性表相同,仍为一对一关系。3.存储结构:用顺序栈戟链栈存储均可,但以顺原创 2021-08-13 17:52:14 · 1145 阅读 · 0 评论 -
线性表的应用
线性表的应用线性表的合并问题描述:假设利用两个线性表LaL_aLa和LbL_bLb分别表示两个集合AAA和BBB,现要求一个新集合A=A∪BA=A∪BA=A∪BLa=(7,5,3,11)L_a=(7,5,3,11)La=(7,5,3,11) Lb=(2,6,5)L_b=(2,6,5)Lb=(2,6,5) −>->−> La=(7,5,3,11,2,6)L_a=(7,5,3,11,2,6)La=(7,5,3,11,2,6)算法步骤依次取出LbL_bLb中的原创 2021-08-09 21:03:45 · 205 阅读 · 0 评论 -
顺序表与链表的比较
顺序表和链表的比较常见的链表:单链表、循环链表、双向链表单链表的实现方式:typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList L;循环链表的实现代码和单链表实现方式相同。区别是:循环链表的最后一个元素的next域指向头结点。一般循环链表设置尾指针,因为比较容易实现链表的尾指针的查询操作。R->next=L;双向链表的实现代码typedef struc原创 2021-08-08 11:09:14 · 182 阅读 · 0 评论 -
线性表的顺序存储与链式存储(单链表)及操作代码实现
线性表的顺序存储和链式存储及其相关操作实现线性表的顺序存储顺序存储的特点以物理位置相邻表示逻辑关系顺序存储的优缺点优点: 1.存储密度大(本身所占存储容量/节点结构所占存储容量) 2.可以随机存取缺点:1.插入和删除需要移动大量元素 2.浪费空间(需要一片连续的存储空间) 3.属于自由存储形式,数据元素不能自由扩充线性表顺序存储的代码实现及相关操作解释(C++)#include<bits/stdc++.h>using namespace std;#defin原创 2021-08-06 22:46:15 · 1078 阅读 · 0 评论