数据结构
ShawnGoethe
会理发的厨子
展开
-
【ShawnZhang】带你看数据结构——第一课:概论
数据结构是一门研究数据在计算机内部存储结构的学科,是描述客观事物的数和字符的集合。包括:逻辑结构,存储结构,和运算三大部分其中逻辑结构有集合,线性,树形,图形四大类存储机构有顺序,链式,索引,散列四种后续上述两行逻辑会两两结合,产生多种数据存储。原创 2015-09-29 12:32:04 · 491 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第九课:二叉树的存储与遍历
第一种:依次编号,凡是空着的地方,也标号,将有数字的填入,反之空着则,父节点若为n,则左子树为2n,右子树为2n+1,通过下标之间的函数关系来判断层数,但你可以想像,如果空的数据比较多,则数组的方法并不适用接下来说一说结构体的结构struct tree{int left;int data;int right;};typedef struct tree tre原创 2015-10-26 20:20:22 · 627 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第十课:二叉排序树
这是一个非常小的知识点二叉树一般在结点会赋值,值叫做权值,权值乘以他到根节点的路径(他到根节点经过几个结点)之和越小越好所以我们希望将大的数据靠近根节点,小的往下排。具体操作:选取随机数组里的第一个数,作为根节点选取第二个数,比根节点小——>左子树,大就右子树(先假设在左边)去第三个数,与根节点比较,小——>左子树,比左子树小——>左,大,就右边重点就是每选一个数都要和根节原创 2015-11-06 21:25:07 · 691 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第十一课:哈夫曼树
在数的结点赋值,叫做权值,每一个结点到根节点的距离称为路径哈夫曼树就是研究(权值)*(路径)之和的最小值在一个无序的数组中任意选取两个值,为结点,并求出他们的父节点(权值之和),再将父节点和数组中剩余的n-2个中最小的组成,如此重复哈夫曼编码:哈夫曼树的左分支为0,右为1,从根节点可以顺序往下读,找到每一个权值的位置还有一个是应用时判定树,可以通过父节点来判断此数据是否符合父节点的原创 2015-11-09 20:16:03 · 926 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第十二课:图
数据结构的最后一种类型:图简单一点说,就是一张网,和你的朋友圈一样,错综复杂,任何一个结点都可能和其他结点有联系说几个定义:有向图、无向图:就是两个结点之间是单向箭头还是双向箭头,还是无向线完全图:无向图每两个结点都存在一个边,有向图每两个结点都存在双向箭头度:指向结点的是入度,出来的是出度,和称度子图:就是图的一部分,含自身为子图路径:两个结点之间的多少条边称之为路径原创 2015-11-09 20:21:19 · 832 阅读 · 0 评论 -
【Shawn-poj】Binary Tree
北大的学长坑我的一道题,首先先问候一下他https://liwyno.github.io/然后我们来看题:2499:Binary Tree总时间限制: 1000ms内存限制: 65536kB描述BackgroundBinary trees are a common data structure in computer science. In this problem w原创 2017-07-06 20:16:27 · 418 阅读 · 0 评论 -
【Shawn-LeetCode】Two Sum
从今日起开始研究LeetCode,争取在暑假完成30道题,题目不是很难,不过受某些人(才不告诉你是谁),打算开始考虑时间复杂度和空间复杂度,大家有兴趣的也可以进行尝试。 Given an array of integers, return indices of the two numbers such that they add up to a specific target.Y...原创 2017-06-03 19:19:56 · 324 阅读 · 0 评论 -
递归优化
递归优化原因:在 Java 中,每个线程都有独立的 Java 虚拟机栈。栈具有后入先出的特点,递归调用也是需要后调用的方法先返回,因此使用栈来存储递归调用的信息。这些信息存储在栈帧中,每个 Java 方法在执行时都会创建一个栈帧,用来存储局部变量表、操作数栈、常量池引用等信息。在调用方法时,对应着一个栈帧入栈,而方法返回时,对应着一个栈帧出栈。随着栈帧frame的增多,将会导致Stack ...原创 2019-01-23 17:17:33 · 302 阅读 · 0 评论 -
14LongestCommonPrefix
title: 2019-02-18-LongestCommonPrefix.mddate: 2019-02-18 22:47:36tags:categories:LeetCodeProblemWrite a function to find the longest common prefix string amongst an array of strings.If the...原创 2019-02-18 22:52:26 · 215 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第八课:二叉树概念
二叉树顾名思义,就是树的一种特殊形态,每一个分叉,最多只有两个,也可以为一个,也可以为0个为0个,就是开头就是个空的树,一个数据也没有(但普通的树就必须有根节点)二叉树还有一个很重要的地方就是它是分左右的,左边的叫左子树,右边的是右子树,是有顺序的有一条常用的规则:对于任何一个二叉树,若叶节点有n0(0是下标)个,独卫2的非叶节点有n2个,则n0=(n2)+1!!!!再次强调,上一原创 2015-10-18 21:24:44 · 748 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第七课:树的基本概念
学到第七课,也几乎是很简单了,虽然接触的不再是简单的线性结构,但代码很简单树的学习类似于一个家谱(示意图啊,随便找的),一个一个的往下,结点可以很多,也可以没有,我们类比来说树:根(又称根节点,祖先):就是曾祖父那一辈(曾祖母不参加),为整个家族的BOSS子树:除了曾祖父,都是子树父结点和子节点:就是你父亲和你,你是你父亲的子节点叶节点(终端结点):就如果你还没有孩子,你的下面原创 2015-10-16 11:23:31 · 778 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第二课:线性表顺序结构
线性表,顾名思义像糖葫芦一样,串起来的数据—o—o—o—简单介绍一下前驱和后继,—o—元素前面的叫前驱,后面的叫后继线性表有两个特征 :除了首元素,每个元素都有一个前驱,除了尾元素,每个元素都有一个后继其实这两个元素也是很好理解的,不就葫芦串么理论知识有求长度,插入删除(重点),查找,显示但此部分设计只考虑子函数,以及使用指针,程序的理解比较困难原创 2015-09-29 20:58:21 · 574 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第三课:线性表链式结构(单链表)
【比较】顺序结构:在内存开辟连续的空间(预分配,一般会浪费)来存储,相邻的物理存储地址就是数据之间的逻辑关系链式结构:在一个存储单元,除了存储数据本身,还要存储下一个数据的物理地址,所以链式的存储在内存上可以是断断续续的创建头结点知识点:L=(Link)malloc(sizeof(JD)); || L=(LinkList *)malloc(sizeof(J原创 2015-10-08 21:13:17 · 641 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第四课:线性表链式结构(循环链表)
循环链表即头尾相连,形成一个圆形的链表因为如果是一个直线的链子,p->next只能向后遍历,无法调用p的前一个元素(不是很方便,但也可以实现)另外有一种双向链表,原理和链表一样,只不过在拥有【data】和【next】域之外,在【data】之前开辟一个指向前一个数据的指针就能很好解决第二行所说的问题链式表就是数组和结构体的一个运用并不是非常复杂,在后续的实训中,我们具体讲述原创 2015-10-12 21:08:21 · 600 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第五课:堆栈
其实吧,如果你坚持看到第五课,你就会发现,其实数据结构并没有你想象的那么复杂当然我们一直在学习理论,并没有在实践,在后续将提供第一个十进制转二进制的源代码有线性顺序表版本,线性链式表版本,堆栈顺序版本和堆栈链式版本接下来,我们先讲述一下堆栈,其实吧,他就是线性表!只是日常生活中,比如我们洗碗,我们的盘子放再那儿,一次往上放,用的时候,从上面开始拿即先进后出,后出先进计算机算原创 2015-10-12 21:19:12 · 581 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第六课:队列
经过五讲走来,我想大家一定大概清楚了,我们现在所学习的数据结构也是非常简单,无非就是数组的变化今天讲解数组的最后一个变形——队列队列就像排队一样,我们去排队,先来的先排队,后来的排在队尾,不允许插队,中途离开,否则那就是数组而不是队列出队(队头,front),入队(队尾rear)记住英文,后续会用到在顺序结构中,队列在内存中的存储都是连续的,相邻的物理单元,就是他们之间的逻辑关系,原创 2015-10-13 21:15:33 · 962 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第十五课:哈夫曼树
哈夫曼树是给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近哈夫曼树一旦创建,就可以永久当解码使用所以无需频繁的修改哈夫曼树,哈夫曼树一定是采用树型结构哈夫曼树的数据量并不是很大,使用int类型完全就可以足够,选择的有结构体数组,通过left,r原创 2015-12-22 21:14:12 · 1408 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第十四课:通讯录
#include #include #include #define MaxSize 50typedef struct { //定义结构体 char name[20]; char address[20]; char tel[12]; char ZipCode[8]; char Em原创 2015-12-22 21:10:42 · 955 阅读 · 0 评论 -
【ShawnZhang】带你看数据结构——第十三课:学生成绩管理系统
也很久没有更新了,也是因为一直在运用数据结构分析一个实际问题要从三个方面去考虑,一个是逻辑结构,是线性还是非线性,第二个考虑存储结构是链式还是顺序在考虑逻辑结构的时候,考虑是一个个顺序排列的话,就用线性表(包括特殊的堆栈和队列),如果是一对多的就选择树或者图如果是频繁插入就选链式,如果是经常读取就选顺序(数组,结构体数组之类)在考虑学生成绩管理系统时,学生的成绩肯定选用结构原创 2015-12-06 14:07:30 · 1406 阅读 · 1 评论 -
树的后序遍历
definition private static class BinaryNode<AnyType> { BinaryNode(AnyType theElement) { this(theElement, null, null); } BinaryNode(AnyType the...原创 2019-02-19 21:56:54 · 775 阅读 · 0 评论