数据结构
数据结构 学习笔记
呵呵哒( ̄▽ ̄)"
喜欢分享学习笔记,并不一定是正确的,阶段性的学习成果做一下记录,欢迎一起交流讨论,也希望有错误的地方可以向我提出,我会虚心接受并纠正
展开
-
数据结构笔记 第五章 树
数据结构笔记 第五章 树原创 2023-03-31 07:47:15 · 96 阅读 · 0 评论 -
数据结构笔记 第四章 串
数据结构笔记 第四章 串原创 2023-03-31 07:35:24 · 71 阅读 · 0 评论 -
数据结构笔记 第三章 栈和队列
数据结构笔记 第三章 栈和队列原创 2023-03-31 07:31:39 · 83 阅读 · 0 评论 -
数据结构笔记 第二章 线性表
数据结构笔记 第二章 线性表原创 2023-03-31 07:28:35 · 76 阅读 · 0 评论 -
数据结构笔记 第一章 绪论
数据结构笔记 第一章 绪论原创 2023-03-31 07:25:39 · 86 阅读 · 0 评论 -
设计一个算法将二叉树的叶结点按从左到右的顺序连成一个单链表,表头指针为head,链接时用叶结点的右指针域来存放单链表指针
设计一个算法将二叉树的叶结点按从左到右的顺序连成一个单链表,表头指针为head,链接时用叶结点的右指针域来存放单链表指针原创 2022-12-10 14:30:28 · 1325 阅读 · 1 评论 -
设有一棵满二叉树(所有结点值均不同),已知其先序序列为pre,设计一个算法求其后序序列post。
设有一棵满二叉树(所有结点值均不同),已知其先序序列为pre,设计一个算法求其后序序列post。原创 2022-12-10 00:58:01 · 498 阅读 · 0 评论 -
假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)。
假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)。原创 2022-12-09 13:49:21 · 2079 阅读 · 2 评论 -
C语言实现找到二叉树p和q的最近公共祖先结点
C语言实现找到二叉树p和q的最近公共祖先结点原创 2022-12-04 09:36:41 · 1178 阅读 · 0 评论 -
试编写算法(用C语言)打印值为x的结点的所有祖先,假设值为x的结点不多于一个。(递归实现和非递归实现)
试编写算法(用C语言)打印值为x的结点的所有祖先,假设值为x的结点不多于一个。原创 2022-12-01 23:02:07 · 1370 阅读 · 0 评论 -
对于二叉树中每个元素值为x的结点,删去以它为根的子树,并释放空间
对于二叉树中每个元素值为x的结点,删去以它为根的子树,并释放空间原创 2022-12-01 21:25:09 · 832 阅读 · 0 评论 -
求先序遍历序列中第(1<=k<=二叉树中结点个数)个结点的值
求先序遍历序列中第(1原创 2022-12-01 20:24:21 · 540 阅读 · 0 评论 -
C语言实现把二叉树中所有结点的左、右子树进行交换的函数
C语言实现把二叉树中所有结点的左、右子树进行交换的函数原创 2022-11-25 12:17:46 · 1683 阅读 · 0 评论 -
C语言实现统计一棵二叉树的所有双分支结点算法
C语言实现统计一棵二叉树的所有双分支结点算法原创 2022-11-25 11:14:06 · 987 阅读 · 0 评论 -
C语言实现判定给定二叉树是否是完全二叉树的算法
C语言实现判定给定二叉树是否是完全二叉树的算法原创 2022-11-25 10:16:06 · 2923 阅读 · 0 评论 -
C语言实现利用先序遍历序列和中序遍历序列构建二叉链表
C语言实现利用先序遍历序列和中序遍历序列构建二叉链表原创 2022-11-23 09:12:37 · 1026 阅读 · 0 评论 -
C语言实现递归算法和非递归算法求二叉树的高度
C语言实现递归算法和非递归算法求二叉树的高度原创 2022-11-22 21:37:28 · 2752 阅读 · 0 评论 -
二叉树的自下而上、从右到左的层次遍历算法实现
二叉树的自下而上、从右到左的层次遍历算法实现原创 2022-11-22 16:02:49 · 1298 阅读 · 1 评论 -
C语言实现非递归先序、中序、后序遍历
C语言实现非递归先序、中序、后序遍历原创 2022-11-22 01:44:33 · 5362 阅读 · 7 评论 -
C语言实现线索化二叉树(先序、中序、后序)
n个结点的二叉树,有n+1个空链域!可用来记录前驱、后继的信息原创 2022-11-16 02:22:51 · 2223 阅读 · 0 评论 -
数据结构:C++ 循环双链表根据查找频度进行位置重组,使频繁访问的结点总是靠近表头
试设计一个实现下述要求的查找运算函数Locate。设有一个带表头结点的双向链表 L,每个结点有 4 个数据成员:指向前驱结点的指针 llink、指向后继结点的指针rlink,存放字符数据的成员 data 和访问频度 freq。所有结点的 freq 初始时都为 0。每当在链表上进行一次Locate (L, x) 操作时,令元素值为x 的结点的访问频度freq 加 1,并将该结点前移,链接到与它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。 算.原创 2021-02-03 18:58:41 · 796 阅读 · 2 评论 -
数据结构----C++ 判断一个带表头结点的双向循环链表L是否对称相等的算法
设计算法,判断带头结点的循环双向链表是否对称算法思路:⚫ 建立两个工作指针p和q,p从左向右扫描L,q从右向左扫描L,两者同时扫描⚫ 进入while循环判断,若p与q不相等且p的后继不等于q⚫ 若对应数据结点的data域相等,则继续循环,否则退出循环⚫ 判断最后一次的数据结点的data域是否相等且sym==1核心代码:int CirLinkList::symmetry(){ int sym=1; CirNode *p=first->next, *q=first->p原创 2021-02-03 00:05:57 · 2035 阅读 · 1 评论 -
数据结构----关于AVL树的最少结点数和最小高度,结合斐波那契序列计算最大高度问题
对于一个高度为 h 的 AVL 树,其最少结点数是多少?反之,对于一个有 n 个结点的 AVL 树, 其最大高度是多少 ? 最小高度是多少 ?(1)最少结点数:(2)最大高度:(3)最小高度:平衡二叉树的特质----树上的任意结点的左子树和右子树的高度之差不超过1(本质)我是热爱学习的呵呵哒~如果你觉得文章很棒,对你有帮助的话,可以点赞+收藏+加关注喔~如果文章有不正确的地方,欢迎交流指正,我将虚心请教~o(>ω<)o我会定期原创 2021-02-02 11:13:21 · 7378 阅读 · 4 评论 -
数据结构----C++实现Kruskal算法(贪心算法)
(1)Kruskal算法——存储结构(2)如何存储连通分量呢?并查集:集合中的元素组织成树的形式: 1. 查找两个元素是否属于同一集合:所在树的根结点是否相同 2. 合并两个集合——将一个集合的根结点作为另一个集合根结点的孩子(3)Kruskal算法关键显然,实现Kruskal算法的关键是:如何判断被考察边的两个顶点是否位于两个连通分量(即是否与生成树中的边形成回路)。如果将同一个连通分量的顶点放入一个集合中,则Kruskal算法需要判断被考察边的两个顶点是否位于两个..原创 2021-02-01 00:22:48 · 968 阅读 · 0 评论 -
数据结构----C++实现非递归和递归的深度优先遍历和广度优先遍历
C++ 非递归深度优先遍历#include <iostream>#include <malloc.h>#include <stack> using namespace std;const int MaxSize=6;//图中最多顶点个数typedef string DataType;int visited[MaxSize] = {0};//全局数组变量visited初始化 class MGraph{ public: MGraph();...原创 2021-01-31 21:23:59 · 659 阅读 · 2 评论 -
数据结构----C++实现Prim算法(贪心算法)
理解最小生成树的定义生成树:连通图的生成树是包含全部顶点的一个极小连通子图 生成树的代价:在无向连通网中,生成树上各边的权值之和 最小生成树:在无向连通网中,代价最小的生成树应用场景:在n个城市之间建造通信网络,至少要架设n-1条通信线路,而每两个城市之间架设通信线路的造价是不一样的,那么如何设计才能使得总造价最小?Prim算法——基本思想Prim算法:从某一个顶点开始构建生成树,每次将代价最小的新顶点纳入生成树,直到所有的顶点都纳入为止。 ...原创 2021-01-31 16:25:38 · 2509 阅读 · 1 评论 -
数据结构----折半查找的查找效率以及折半查找成功与失败的ASL
原创 2021-01-24 18:31:43 · 3964 阅读 · 1 评论 -
数据结构笔记----双重散列法 求解比较次数和平均查找长度
原创 2021-01-08 09:52:12 · 2510 阅读 · 1 评论 -
数据结构笔记----KMP算法例题 求解next数组
已知模式T="abaabcaba”,求其对应的next[0..8]的值。原创 2021-01-08 09:46:28 · 1185 阅读 · 1 评论 -
C++ 用土办法找到二叉树中序遍历序列前驱和后继
问题思考:如果不用三叉树,而用指针怎么找到中序遍历序列的前驱和后继呢?思路:从根结点出发,重新进行一次中序遍历,指针q记录当前访问的结点,指针pre记录上一个被访问结点,指针pre记录上一个被访问的结点。①如何找到指定结点p在 q 中序遍历序列中的前驱?②如何找到p的中序后继?①如何找到指定结点p中序遍历序列中的前驱?(1)寻找中序前驱//中序遍历寻找前驱 void BiTree::BInorder(BiNode *bt){ if(bt!=nul.原创 2020-11-25 12:34:51 · 1603 阅读 · 1 评论 -
C++实现二叉树链表存储结构先中后序遍历的递归算法和非递归算法和顺序存储完全二叉树
实验四 二叉树 1.实验目的 (1)掌握二叉树的结构特性和二叉链表存储结构; (2)理解二叉树、完全二叉树、满二叉树的概念和存储特点; (3)掌握二叉树遍历的递归和非递归方法。 2.实验内容 (1)假设二叉树采用链接存储方式存储,分别编写一个二叉树先序遍历的递归算法和非递归算法。 (2)一棵完全二叉树以顺序方式存储,设计一个递归算法,对该完全二叉树进 行中序遍历。 3.解题思路 (1)采用扩展二叉树的先序遍历序列来建立一棵二叉树,如图 4-1(a)所示的一棵 二叉树,其扩原创 2020-11-24 18:26:55 · 5184 阅读 · 1 评论 -
C++数据结构---链队列结构实现应用场景排队问题
链队列:队列的链接存储结构称为链队列,通常用单链表表示。其结点的结构与单链表的结点结构相同。根据队列的先进先出特性,为了操作上的方便,设置队头指针指向链队列的头结点,队尾指针指向终端结点。相关博客链接:https://blog.csdn.net/weixin_41987016/article/details/109856416相关博客链接:https://blog.csdn.net/weixin_41987016/article/details/109852812链队列的实现 :#includ原创 2020-11-20 18:24:46 · 634 阅读 · 0 评论 -
C++链队:创建链式队列/初始化、入队、出队、销毁、取队头
链队列:队列的链接存储结构称为链队列,通常用单链表表示。其结点的结构与单链表的结点结构相同。根据队列的先进先出特性,为了操作上的方便,设置队头指针指向链队列的头结点,队尾指针指向终端结点。C++链队列的实现:1.创建链式队列typedef int DataType;struct Node{ DataType data; Node *next;};class LinkQueue{ public: LinkQueue();//初始化空的链表队列 ~LinkQueue();//释原创 2020-11-20 17:45:32 · 4792 阅读 · 0 评论 -
C++数据结构---循环队列结构实现应用场景排队问题
实验三 队列 1.实验目的 (1)理解队列的定义、特点及与线性表的异同; (2)熟悉队列的组织方法,队列满、队列空的判断条件及其描述; (3)掌握队列的基本操作(入队、出队等)。 2.实验内容 (1)假设以数组 sequ[MaxSize]存放环形队列的元素,同时 Rear 和 Len 分别指示 环形队列中队尾元素的位置和内含元素的个数。设计相应的入队和出队算法。 (2)某汽车轮渡口,过江渡船每次能载 10 辆车过江。过江车辆分别为客车类和 货车类,上船有如下规定:同类车先到先原创 2020-11-20 16:26:17 · 1599 阅读 · 0 评论 -
数据结构基础例题
1.假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女之间不能相互继承。则表示该遗产继承关系的数据结构应该是(B)。A树 B图 C线性表 D集合2.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为(B)。A.5.3,4,6,1,2B.3,2,5,6,4,1C.3,1,2,5,4,6D.1,5,4,6,2,33.设有两个串p和q,求q在p中首次出现的位置的运算称作(C)。A.链接B.求子串C.模式匹配D.求原创 2020-11-16 23:19:02 · 5088 阅读 · 2 评论 -
C++ 实现字符串数组中提取整数和浮点数
C++程序代码实现:#include <iostream>#include <string.h>using namespace std;//函数声明 int GetInt(); float GetFloat();float SVF(char array[]);float SVF(char array[]){ float value; /* 需要注意的是,这里没有终结符,故需要知道数组的 */ /* 大小(数组的大小是编译时常量)*/ .原创 2020-11-14 00:17:12 · 2977 阅读 · 0 评论 -
C++ 实现顺序表实验题
1.实验目的(1)了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系有顺序存储结构和链式存储结构;(2)掌握这两种存储结构的描述方法:(3)掌握线性表的基本操作<查找、插入、删除>(4)考虑时间和空间复杂度来设计算法。2.实验内容(1)创建一个顺序表,存放在数组A[N]中,元素的类型为整型,设计算法调整A,使其左边的所有元素小于0,右边的所有元素大于0【要求算法的时间复杂度和空间复杂度均为O(n)】3.解题思路(1)如图1-1所示,设立两个工作原创 2020-11-05 02:09:39 · 3437 阅读 · 0 评论