随笔分类 -  数据结构

摘要:208. 实现 Trie (前缀树) 题目描述 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); 阅读全文
posted @ 2020-10-07 16:26 Lucky小黄人^_^ 阅读(194) 评论(0) 推荐(0)
摘要:数据结构课上学的邻接表存储图只能用来学习使用,真正写算法题的是否如果也写那么多个类,构建图和DFS操作这么多还这么复杂,那肯定时间不够,所以下面介绍一种刷题的时候比较实用的一种方式,一般不需要创建类,或者最多只需创建一个类 如果每个边没有权重,使用ArrayList<LinkedList<Integ 阅读全文
posted @ 2020-05-11 20:04 Lucky小黄人^_^ 阅读(405) 评论(0) 推荐(0)
摘要:Kruscal算法实现最小生成树 主方法 1 import java.util.Arrays; 2 import java.util.Comparator; 3 import java.util.Scanner; 4 5 public class Solution4 { 6 static class 阅读全文
posted @ 2020-04-10 11:42 Lucky小黄人^_^ 阅读(549) 评论(0) 推荐(0)
摘要:DFS的复杂度分析: 对于邻接表的存储方式:因为邻接表中每条链表上的从第2个结点到表尾结点一定是表头结点的邻接点,所以遍历表头结点的邻接的过程中只需要遍历这些顶点即可,无需遍历其他的顶点,所以遍历某个顶点的所有邻接点的复杂度为O(ei), ei为每个顶点的邻接点个数,也就是每条链表的边数。所以邻接表 阅读全文
posted @ 2020-04-03 17:41 Lucky小黄人^_^ 阅读(10045) 评论(1) 推荐(0)
摘要:1.单源最短路径 (1)无权图的单源最短路径 函数:返回还未被收录顶点中dist最小者 2.多源最短路径Floyd算法 阅读全文
posted @ 2018-12-06 17:43 Lucky小黄人^_^ 阅读(1088) 评论(0) 推荐(0)
摘要:树采用顺序数组方式存储,从下表0开始存储,i的左孩子是2 * i + 1,右孩子是2 * i + 2 效果图片: 参考文章:http://www.doc88.com/p-7136117098724.html 阅读全文
posted @ 2018-11-30 15:19 Lucky小黄人^_^ 阅读(258) 评论(0) 推荐(0)
摘要:随机存取、顺序存取、随机存储和顺序存储这四个概念是完全不一样的,切不可将之混淆 很多人包括我可能认为随机存取就是随机存储,顺序存取就是顺序存取,其实不是这样。 下面完整的介绍一下这4个概念 存取结构:分为随机存取和非随机存取(又称顺序存取) 1、随机存取就是直接存取,可以通过下标直接访问的那种数据结 阅读全文
posted @ 2018-11-08 16:36 Lucky小黄人^_^ 阅读(30881) 评论(0) 推荐(16)
摘要:错误 1 error LNK2019: 无法解析的外部符号 "public: int __thiscall SqList<class StuTab>::getLength(void)" (?getLength@?$SqList@VStuTab@@@@QAEHXZ),该符号在函数 "class std 阅读全文
posted @ 2018-11-07 20:13 Lucky小黄人^_^ 阅读(866) 评论(0) 推荐(0)
摘要:派生类不能继承基类的构造函数,必须自己定义构造函数进行新增数据成员初始化工作,如果想同时初始化基类数据成员,必须调用基类构造函数。 例如: 基类也可以使用初始值列表的构造函数:派生类的构造函数不用改变 构造一个类的对象之前,必须先构造其中的嵌套类对象,若没给嵌套类传参数,则调用嵌套类的默认构造函数, 阅读全文
posted @ 2018-10-18 14:12 Lucky小黄人^_^ 阅读(1269) 评论(0) 推荐(0)
摘要:在一般友元函数的前面加上 template<typename T),注意在函数的声明和定义处都要加这个模板 例如: 友元函数的定义部分也要加上template<typename T>这个模板 如果不知道怎么声明模板类的友元函数,可以在类内部用函数实现你想用友元函数实现的功能, 然后在类外的友元函数中 阅读全文
posted @ 2018-10-18 11:41 Lucky小黄人^_^ 阅读(966) 评论(0) 推荐(0)
摘要:输入测试数据: 5 4 10 0 0 8 14 0 0 0 0 15 和 5 4 10 0 0 8 14 0 0 0 0 13 头文件:head.h 1 #ifndef HEAD_H_INCLUDE 2 #define HEAD_H_INCLUDE 3 4 #include <stdio.h> 5 阅读全文
posted @ 2018-10-15 19:21 Lucky小黄人^_^ 阅读(1909) 评论(2) 推荐(0)
摘要:第一种方法的逻辑是我比较理得清的 法一: midS是存放中缀表达式的字符串,字符之间没有空格,suffiexS是存放后缀表达式的字符串,数字和字符之间都有空格 思路: 1.如果midS[i]是'(',直接压栈 2.如果是数字, 把完整数字复制到到midS中后加一个空格,读取完数字后要判断此时的mid 阅读全文
posted @ 2018-10-12 12:03 Lucky小黄人^_^ 阅读(376) 评论(0) 推荐(0)
摘要:题目链接:https://pintia.cn/problem-sets/434/problems/5865 阅读全文
posted @ 2018-10-11 21:07 Lucky小黄人^_^ 阅读(373) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 4 #define MAXSIZE 1000 5 #define ERROR -1 6 7 struct Node{ 8 int Customer[MAXSIZE]; 9 int rear; 10 int front; 11 }; 12 13 typedef struct Node* Qu... 阅读全文
posted @ 2018-10-10 22:25 Lucky小黄人^_^ 阅读(335) 评论(0) 推荐(0)
摘要:汉诺塔实现的基本思路是:不断将n个盘的汉诺塔问题转换为2个(n-1)个盘的汉诺塔问题,用递归实现比较好理解。设n盘问题为(n, a, b, c),其中参数如下结构体所定义,第一个参数表示需要移动的盘子的数量,第二个参数表示n个盘子起始所在柱子a, 第三个参数表示会被借用的柱子b, 第四个参数表示这 阅读全文
posted @ 2018-10-10 21:16 Lucky小黄人^_^ 阅读(3039) 评论(0) 推荐(1)
摘要:标准解答: 粗糙解答: 阅读全文
posted @ 2018-10-08 20:31 Lucky小黄人^_^ 阅读(473) 评论(0) 推荐(0)
摘要:题目链接:https://pintia.cn/problem-sets/434/problems/5654 代码如下:代码是参考这篇文章的:https://blog.csdn.net/VisDate/article/details/50950019 阅读全文
posted @ 2018-10-08 17:08 Lucky小黄人^_^ 阅读(176) 评论(0) 推荐(0)
摘要:题目链接:https://pintia.cn/problem-sets/434/problems/5726 1.如果题目没有给我们建好原递增序列的链表,那么我们可以考虑在创建原链表时插入需要插入的结点,就是在创建原链表时,每读入一个数据,将该数据与待插入的数据相比较,如果发现待插入数据小于等于刚读入 阅读全文
posted @ 2018-10-07 16:00 Lucky小黄人^_^ 阅读(313) 评论(0) 推荐(0)
摘要:二叉查找树的建立: 递归查找给定元素 非递归查找给定元素: 递归查找最小元素结点 非递归查找最大元素结点: 插入一个结点: 删除给定元素的结点: 1.要删除的结点有两个孩子结点 2.要删除的结点只有一个孩子结点 3.要删除的结点没有孩子结点 用来测试的其他函数和主函数: 阅读全文
posted @ 2018-10-06 18:14 Lucky小黄人^_^ 阅读(593) 评论(0) 推荐(0)
摘要:运行时输入: abc*+de*f+g*+ 阅读全文
posted @ 2018-10-06 15:24 Lucky小黄人^_^ 阅读(399) 评论(0) 推荐(0)