随笔分类 -  数据结构

上课用,复习笔记
摘要:树链剖分贼难,本蒟蒻看了好几篇博客才勉强弄懂一丢丢,现在写篇博客,记录一下自己学习树链剖分并观摩大佬代码的时候遇到的一些问题以及解决办法还有对代码的理解。 (当然也不能这么说自己对不对,至今仍对在学校上篮球课时某兄弟说过的一句话印象深刻:首先排除自己菜) 首先是树链剖分的一些概念,包括重链轻链重儿子 阅读全文
posted @ 2021-12-01 00:05 EvanTheBoy 阅读(53) 评论(0) 推荐(0)
摘要:这里记录一下老师上课讲过的dfs. 主要思路是,我们对于每一个节点都设置白色、灰色和黑色三种颜色,分别表示三种状态:未访问、正在访问和访问完毕。这三种状态的标准是根据某一个具体节点的邻居节点来定的,就是说,对于某一个具体节点,如果还没有访问完该节点的所有邻居节点,那么就表示这个节点处于正在访问状态, 阅读全文
posted @ 2021-11-21 15:52 EvanTheBoy 阅读(389) 评论(0) 推荐(0)
摘要:现在我们分别创建图的结点、边和图本身的类: Node.java: 1 package com.hw.Graph; 2 3 import java.util.ArrayList; 4 5 public class Node { 6 public int value; 7 public int in; 阅读全文
posted @ 2021-08-26 14:27 EvanTheBoy 阅读(66) 评论(0) 推荐(0)
摘要:构建哈夫曼树 1 package com.hw.list0710; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 6 public class Huffman { 7 private static class No 阅读全文
posted @ 2021-08-05 21:45 EvanTheBoy 阅读(119) 评论(0) 推荐(0)
摘要:这次的二叉搜索树暂时只能添加、删除整数。 不同于以往创建树的过程,在创建一棵二叉搜索树时,我们还需要一个指向结点的父节点的指针(如果存在的话),静态内部类如下: 1 private TreeNode left; 2 private TreeNode right; 3 private TreeNode 阅读全文
posted @ 2021-07-22 23:53 EvanTheBoy 阅读(39) 评论(0) 推荐(0)
摘要:深度优先 广度优先 我们用一个二维数组来存储城市与城市之间的关系,若从城市i到城市j直接相连或间接相连,那么二维数组的[i][j]和[j][i]均为1,若无论如何也无法从一座城市抵达另外一座城市,则对应二维数组中两个值为0.约定城市到自己之间是连接的。 先来看看DFS.首先我们需要遍历一个存储了城市 阅读全文
posted @ 2021-07-19 23:28 EvanTheBoy 阅读(119) 评论(0) 推荐(0)
摘要:所谓Morris遍历,就是建立线索二叉树,然后在遍历的同时边建边拆。 主要思路就是,我先拿到当前节点,然后设置一个mostRight指向当前节点的左子树,然后不断地找右子树(这样做是为了找到当前节点的直接前驱节点)。找到之后,如果这个节点的右孩子指向为空,则指向当前节点,这就是建立线索二叉树;同时, 阅读全文
posted @ 2021-07-18 11:14 EvanTheBoy 阅读(62) 评论(0) 推荐(0)
摘要:这里记录一下用C语言递归创建树的代码: 1 #include <stdio.h> 2 #include <assert.h> 3 struct TreeNode { 4 struct TreeNode* left; 5 struct TreeNode* right; 6 char val; 7 }; 阅读全文
posted @ 2021-07-17 11:33 EvanTheBoy 阅读(176) 评论(0) 推荐(0)
摘要:这里收藏的排序算法有冒泡、选择、插入、希尔、快速、归并和堆排序,下面直接看代码: AllKindsOfSorts.java: 1 package com.hw.sorts0512; 2 3 public class AllKindsOfSorts { 4 private int pivot,inde 阅读全文
posted @ 2021-05-26 21:53 EvanTheBoy 阅读(53) 评论(0) 推荐(0)
摘要:本次程序可输出链表的中间结点的数据。 1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 #include <stdlib.h> 4 struct Node { 5 int data; 6 struct Node* next; 7 } 阅读全文
posted @ 2021-05-24 23:37 EvanTheBoy 阅读(89) 评论(0) 推荐(0)
摘要:这次来看看希尔排序: 1 #include <iostream> 2 #define N 100 3 using namespace std; 4 class ShellSort 5 { 6 public: 7 void shellSort(int arr[], int length) 8 { 9 阅读全文
posted @ 2021-05-23 19:09 EvanTheBoy 阅读(43) 评论(0) 推荐(0)
摘要:这篇文章我们来看看倒数第k个结点: 什么倒数第k个结点?就是立刻打印出链表中倒数第k个结点的数据。怎么实现呢?我们直接看代码: 1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 #include <stdlib.h> 4 struc 阅读全文
posted @ 2021-05-16 11:12 EvanTheBoy 阅读(68) 评论(0) 推荐(0)
摘要:这里我们来看看链表的基本操作: 1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 struct Node { 6 int data; 7 struct Node* next; 8 }; 阅读全文
posted @ 2021-05-16 10:58 EvanTheBoy 阅读(124) 评论(0) 推荐(0)
摘要:学过计算机的都知道,队列是一种先进先出的数据结构。这里队列主要是用链表来实现的。 下面来看代码: 1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 #include <stdlib.h> 4 struct Node { 5 int 阅读全文
posted @ 2021-05-15 23:49 EvanTheBoy 阅读(191) 评论(0) 推荐(0)