随笔分类 - 数据结构
数据结构很难但是我肯定能学号!
摘要:首先要有第一个思维,就是树的结点都是集合,边都是关系。那么对应起来就是根结点是全集,子节点是子集。不管我最终搜索落在什么结点上,都要从根节点来寻找。 树的深度和高度是一样的,从上向下数是深度,从下向上数是高度。树的深度和高度是相等的,但是结点的高度和深度不一定相等。节点的度是有几个节点与这个节点相连
阅读全文
摘要:单调栈是用来维护最近的大于和小于关系 其实单调栈就是一个把头给封死的一个单调队列。单调队列能从两边出,但是单调栈只能从头出。 首先在看到问题的时候,不能陷入到局部思考,首先先想原问题的性质。这个最大矩形有什么限制呢?高肯定是所覆盖中的最矮的木板。最优解肯定是以某一块木板最为高度,现在枚举每一块木板,
阅读全文
摘要:首先,单调队列的作用是维护区间最大值 比如说现在我们看上面这个图吧,现在把这些数,每三个化成一个窗口。在每个窗口后面蓝色部分,从左到右写出窗口中有可能成为区间最大值的元素。然后你会发现,所有的蓝色部分的第一个数字好像就是相应的区间最大值,而且你会发现,每一个蓝色部分好像都是递减的。其实只要一个数后面
阅读全文
摘要:首先是队列的: #include <stdio.h> #include <stdlib.h> #include <time.h> typedef struct Queue { int* data; int head, tail; int length; } Queue; Queue* init(in
阅读全文
摘要:用一题来作为引例吧。重点不是怎么解,是要思考是怎么想到用栈来解决这个问题的。 首先拿到这个问题怎么思考呢?记住,先将难的问题分解成简单的问题来思考。那么这题要怎么简化呢?我能不能把这题只简化成一种括号呢?后面让我们看看这些括号来分析什么样的括号是合法的: 从这些例子中我们要分析出几个问题: 1,在第
阅读全文
摘要:#include <stdio.h> #include <stdlib.h> #include <time.h> //如果需要良好的封装的话就需要两个结构 typedef struct ListNode { int data; struct ListNode* next; }; typedef st
阅读全文
摘要:我打算跟着https://www.bilibili.com/video/BV1Cq4y1A7wo?p=3这个来加深自己对数据结构的理解,现在后面的数据结构方面的博客一般来说的话都来自于这个视频中的内容 首先先综述一下数据结构这个学科:数据结构就是定义一种性质并维护一种性质。所以说数据结构就是为结构定
阅读全文
摘要:一,二叉树: 1,重要性质: 2 2,二叉树的遍历: 二叉树的遍历一共分为四种,三种是用递归实现的,一种是使用队列实现的: 三种分别是前序遍历,中序遍历,后序遍历。还有一种是层序遍历是通过队列实现的 void InorderTraversal( BinTree BT ) { if( BT ) { I
阅读全文
摘要:本文分为三个方向总结线性表,队列,堆栈。 一,线性表: 1,定义: 1 typedef int position; 2 typedef struct LNode *List; 3 struct LNode { 4 ElementType *Data; 5 Position Last; 6 }; 就是
阅读全文

浙公网安备 33010602011771号