数据结构
文章平均质量分 71
Slngen
这个作者很懒,什么都没留下…
展开
-
二分查找结束时左右指针的位置
#引言在做折半插入排序时,发现自己对于二分的理解不是很充分,特别是二分查找失败时左右指针的位置。本来想着单纯推导一下,但发现推导一遍后不仅知道了这个问题的答案,对于二分查找也有了更深的理解。#结论若用left、right和mid分别记录二分查找时的左标记指针、右标记指针和中间位置标记指针。对元素在查找序列进行查找,则在查找结束时,无论查找是否成功,查找序列中left左边的元素都比小,right右边的元素都比大。#举例分析查找序列为(7,10,13,16,19),画出折半查找的判定原创 2020-12-02 14:58:17 · 947 阅读 · 3 评论 -
选择题快速求解AOE网的关键路径
#引言求解AOE网关键路径时,书上的方法为先从源点到汇点求解事件最早发生时间ve,再从汇点到源点求解事件最迟发生时间vl,再利用ve和vl求解每个活动的最早开始时间e(i)和最迟开始时间l(i),e(i)和l(i)相等的活动则为关键活动,他们一起组成的从源点到汇点的路径即为关键路径。王道的书上在举例子的时候,备注了一小行话:“如果这是一道选择题,根据上述求ve()的过程就已经能知道关键路径。”,但并没有展开讲如何确定。本文就补充说明一下。#求法这里直接举例给出求法如下AOE图,我们从V1原创 2020-11-28 12:12:26 · 7863 阅读 · 10 评论 -
Dijkstra(邻接矩阵实现)
Dijkstra使用邻接矩阵存储图对比于邻接表,会占据大量内存,但通常此类题目不会卡内存。#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define Max 20000 //最大点编号int Map[Max][Max]; //图int flag[Max]; //点标记int an...原创 2020-11-26 14:53:09 · 2985 阅读 · 1 评论 -
二叉树之线索二叉树 二叉树的中序线索化和线索化后的遍历 C++代码实验
/** * 中序线索化二叉树 * 核心本质还是中序遍历,只不过在遍历时记录前驱后继的指针 * 设定now和pre两个指针遍历,now为当前位置的结点,pre为刚刚经过的 * 即now为pre的后继,pre为now的前驱 * 则now的左空指针指向pre,pre的右空指针指向now */#include<iostream>using namespace std;#define DataType inttypedef class ThreadTree{ publi.原创 2020-11-09 10:46:32 · 523 阅读 · 0 评论 -
二叉树之二叉线索树 快速手算中序线索化前驱后继的方法
引言很多时候我们需要先手动对树进行一些分析,再考虑使用什么样的结构去编程,所以手算去分析一颗树也是十分重要的。对于二叉树,我们可以将它改造为线索树,也就将左空指针指向其前驱结点,右空指针指向其后继结点。对于二叉排序树(BST),它的中序遍历得到的序列是递增的,所以这时就给了我们快速求解某结点前驱后继方法的机会。本文记录了一种利用标记对快速求解中序遍历下二叉排序树的结点前驱后继的方法。问题假设如图所示有14个结点的平衡二叉树,我们现在随便选取一个结点,比如结点10,熟悉BST的人一原创 2020-11-08 16:37:27 · 849 阅读 · 0 评论 -
二叉树空指针个数的理解
引言二叉树在使用链式存储时,每一个结点都有一个指针,或者为空或者指向子结点。空指针的个数为n+1是众所周知的事,虽然不论哪种证明方法都仅仅是恒等式变形的结果,但去分析等式两边的意义是十分有助于理解关系本质的。几种理解1.以节点数为切入点...原创 2020-11-08 12:58:24 · 11974 阅读 · 3 评论 -
二叉树之二叉排序树 插入和中序遍历 C++代码实验
/** * 二叉排序树BST的插入和中序遍历 * 排序树的中序遍历输出序列是递增的 **/#include<iostream>using namespace std;#define DataType int#define test_length 12DataType test_data[test_length]={5,3,1,4,9,2,4,2,7,6,8,9}; //测试用例typedef class btNode{ //树的节点,每个节点可以视为一棵树的根.原创 2020-11-08 10:32:22 · 1248 阅读 · 0 评论 -
队列之链式存储 C++代码实验
#include<iostream>using namespace std;#define DataType inttypedef class Node{ //队列链节点 public: DataType data; Node *next; }Node;typedef class queue{ //链式队列 Node *front,*rear; int length; .原创 2020-11-05 16:09:23 · 250 阅读 · 0 评论 -
队列之顺序存储 C++代码实验
#include<iostream>using namespace std;#define MaxSize (5+1)#define DataType int//采用循环队列方式解决假溢出问题,即队列的front/rear = (front/rear)%MaxSize//如果不加入别的检查方法(本文就没有),这样的做法会使得数组有一个位置始终为空,即实际容量为MaxSize-1typedef class queue{ DataType data[MaxSize]; .原创 2020-11-05 14:46:38 · 170 阅读 · 0 评论 -
栈之链式栈 C++代码实验
#include<iostream>using namespace std;#define DataType inttypedef class Node //链式栈可以视为有限制条件的单链表{ public: DataType data; Node *next;}Node; //节点结构对于用户是不可见的typedef class{ Node *top = NULL; //栈顶指针 .原创 2020-11-04 15:10:11 · 210 阅读 · 0 评论 -
栈之顺序栈 C++代码实验
#include<iostream>using namespace std;#define DataType int#define MaxSize 5 //栈容量typedef class{ DataType stack_data[MaxSize]; int top=-1; //顺序栈只需要int型指示栈顶的位置下标 public: void push(DataType .原创 2020-11-04 14:18:29 · 402 阅读 · 0 评论 -
线性表之顺序表 C++代码实验
基本的查空、插入/删除、显示功能。其他功能只需要在这个结构上照着写函数即可,就不放在代码里面,否则反而影响阅读。#include<iostream>using namespace std;#define MaxNum 100 //线性表最大长度typedef int DataType; //线性表数据类型,简单起见设为intclass SeqList{ //线性表 public: DataTyp原创 2020-10-31 14:40:56 · 261 阅读 · 0 评论