数据结构(王道)
文章平均质量分 67
数据结构
莫忘、莫念
自律即自由
展开
-
树表的查找
二叉排序树不一定是平衡二叉树。原创 2023-01-05 22:09:57 · 887 阅读 · 0 评论 -
基于线性表的查找
【代码】基于线性表的查找。原创 2023-01-03 23:45:00 · 850 阅读 · 0 评论 -
排序(完整版)
【代码】排序(完整版)原创 2022-12-30 23:43:08 · 981 阅读 · 0 评论 -
生成树(基础)
接下来则应在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。原创 2022-12-18 00:41:35 · 11565 阅读 · 0 评论 -
最短路径(难)
完整代码: Dijkstra算法Floyd 运行结果: 完整代码: 运行结果:原创 2022-12-20 23:32:34 · 642 阅读 · 0 评论 -
图的遍历(基础)
遍历的定义:从已给的连通图中的某一顶点出发,沿着一些边访遍图中的所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。遍历的实质:找每个邻接点的过程。图的特点:图中可能存在回路,且图中任一顶点都有可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。怎样避免重复访问?解决思路:设置辅助数组visited[n],用来标记每个被访问过的顶点。1.初始状态visited[i]为0;2.顶点被访问,改visited[i]为1,防止被多次访问。原创 2022-12-09 00:32:23 · 5124 阅读 · 0 评论 -
关于图的学习
顶点的度、入度、出度子图:设有两个图G=(V,E)和G1=(V1,E1),若V1是V的子集,即V1属于V,且E1是E的子集,即E1属于E,则称G1是G的子图。生成子图:若有满足V(G1)=V(G),则称其为G的生成子图。边的权、带权图/网、带权路径长度几种特殊形态的图。原创 2022-11-27 21:21:34 · 445 阅读 · 0 评论 -
线索二叉树和哈夫曼树
{//数据域//左孩子或线索指针//右孩子或线索指针左标志ltag=0,表示lchild指向左孩子结点;ltag=1,表示lchild指向前驱结点右标志rtag=0,表示rchild指向右孩子结点;rtag=1,表示rchild指向后继结点二叉树线索化的基本思想:二叉树的线索化实质上是遍历一棵二叉树。在遍历过程中,访问结点的操作是检查此结点的左、右指针域是否为空,如果为空,将它指向其前驱或后继结点的线索路径:是指从一个结点到另一个结点之间的分支序列。路径长度。原创 2022-11-23 00:16:25 · 654 阅读 · 0 评论 -
二叉树的学习
2.n = n1 + 2n2 + 1(树的结点数 = 总度数 + 1,其中度为0的结点数有n0个,度数和为0×n0;1.n = n0 + n1 + n2(树的结点数 = 度为0的结点数 + 度为1的结点数 + 度为2的结点数)分析:第一层有1个结点;总共有1+2+2^2......+2^(h-1)=(1-2^h)/(1-2)=2^h-1。又推出若完全二叉树有2k个(偶数)个结点,则必有n1=1,n0=k,n2=k-1。若完全二叉树有2k-1个(奇数)个结点,则必有n1=0,n0=k,n2=k-1。原创 2022-11-11 15:13:41 · 1347 阅读 · 0 评论 -
树和森林基础
第2层有m个结点,第3层:第2层的第1个结点有m个结点(对应第3层有m个结点),第3层的第2个结点有m个结点(对应第3层有m个结点)+.....,一共有m个m,也就是m^2,所以第3层有m^2个结点;“B”结点的度数为2,“C”结点的度数为1,“D”结点的度数为3,那么2+1+3=6(相当于是第3层的结点个数);上图中,“父亲”结点,“二叔”结点和“三叔”结点之间是兄弟的关系,所有可以说“二叔”结点是“父亲”结点的。上图中,“父亲”结点的子孙结点有“你”,“K”,“L”和“F”原创 2022-11-10 23:35:57 · 663 阅读 · 0 评论 -
广义表的学习
四、关于广义表的取“表头”“表尾”三、广义表的2种常见的存储结构。原创 2022-11-07 23:22:32 · 5154 阅读 · 0 评论 -
稀疏矩阵的基础
稀疏矩阵的基础,稀疏矩阵的转置,稀疏矩阵的三元组,稀疏矩阵的十字链表原创 2022-11-05 23:49:28 · 1220 阅读 · 0 评论 -
矩阵的基础知识
各种矩阵,三角矩阵,对称矩阵,稀疏矩阵原创 2022-11-02 23:31:28 · 4723 阅读 · 0 评论 -
数组的基本知识
数组:按照一定个数排列起来的,具有相同类型的数据元素的集合。一维数组:若线性表中的数据元素为非结构的简单元素,则称为一维数组。一维数组的逻辑结构:线性结构。定长的线性表。声明格式:数据类型 变量名称[长度] int a[5];二维数组:若一维数组中的元素又是一维数组结构,则称为二维数组。二维数组的逻辑结构(可以看成非线性结构也可以看成线性结构):1.非线性结构:每一个数据元素既在一个行表中,又在一个列表中。2.线性结构:该线性表的每个数据元素也是一个定长的线性表。原创 2022-10-31 22:52:44 · 3586 阅读 · 0 评论 -
关于串的学习
串是零个或多个任意字符组成的有限序列串的特点:串是一种特殊的线性表,数据元素之间呈线性关系串是数据对象限定为字符集(如中文字符、英文字符、数字字符、标点符号等)子串:串中任意个连续字符组成的子序列称为该串的子串例如:"abcde"的子串有:""、"a"、"ab"、"abc"、"abcd"和"abcde"等真子串:是指不包含自身的所有子串。主串:包含子串的串相应地称为主串。字符位置:字符在序列中的序号为该字符在串中的位置。子串位置:子串的第一个字符在主串中的位置。原创 2022-10-26 00:25:28 · 1857 阅读 · 2 评论 -
队列的初学
队列(Queue):是只允许在一端进行插入,另一端删除的线性表。(插入也称入队,删除也称出队)栈(Stack):是只允许在一端进行插入或删除操作的线性表。原创 2022-10-19 00:13:39 · 168 阅读 · 0 评论 -
快速排序的代码
【代码】快速排序。原创 2022-10-17 22:44:26 · 1334 阅读 · 0 评论 -
循环链表基础
循环链表:是一种头尾相接的链表(即:表中最后一个结点的指针域指向头结点,整个链表形成一个环)优点:从表中任一结点出发均可找到表中其他结点。原创 2022-10-15 15:35:38 · 134 阅读 · 0 评论 -
链栈的基本操作
【代码】链栈的基本操作。原创 2022-10-15 14:35:33 · 190 阅读 · 0 评论 -
顺序栈的基本操作
【代码】顺序栈的基本操作。原创 2022-10-14 16:32:38 · 399 阅读 · 0 评论 -
栈的基础知识
【代码】栈的基础知识。原创 2022-10-13 00:35:59 · 638 阅读 · 0 评论 -
双链表基础
/前驱和后继指针。原创 2022-10-07 00:12:22 · 726 阅读 · 0 评论 -
单链表的基本操作
typedef struct Lnode//定义单链表的结点类型{//每个结点存放一个数据元素//指针指向下一个结点Lnode* L;//声明一个指向单链表第一个结点的指针LinkList L;//声明一个指向单链表第一个结点的指针注意:强调这是一个单链表,使用LinkList强调这是一个结点,使用Lnode*原创 2022-10-04 01:02:52 · 1998 阅读 · 0 评论 -
单链表(基础)
【代码】单链表(基础)原创 2022-09-27 20:29:23 · 1157 阅读 · 0 评论 -
顺序表(基础)
第二步:那么想要存放某一个未知类型的数据,可以利用typedef,之后如果想存放double类型的数据,只需要将typedef int M改成typedef double M。第一步: 现在整个顺序表存放的是int类型的数据,如果需要存放double类型的数据需要将顺序表中所有的int改成double。第三步:struct seqlist太长了,也可以利用typedef。原创 2022-09-21 20:34:15 · 306 阅读 · 0 评论