
数据结构学习
匍匐-菜鸟
好好做一件事,好好做下去
展开
-
数据结构学习笔记(二)
线性表 线性表是一种最简单的数据结构,其是一个数据元素的有序集,其特征如下:1.存在一个唯一的第一元素;存在一个唯一的最后元素;2.每个中间的元素均有一个前驱和一个后驱,且同一个线性表之中的元素具有相同的特征。 而线性表又可以分为两种类型,顺序结构和链式结构 首先我们建立其抽象类型的定义:ADT list { 数据对象:D={ai | ai∈原创 2017-04-27 23:52:25 · 364 阅读 · 0 评论 -
数据结构学习笔记(三)
深入理解抽象数据类型;ADT是一些操作的集合,是数学的抽象,在ADT的定义中根本没涉及如何实现操作的集合,这个可以看作是模块化设计的补充。这些操作在程序只编写一次,而程序中任何其他部分需要在该ADT上运行其中的一种操作时可以通过调用适当的函数来进行,若需要改变操作细节,只需要修改运行这些ADT操作的例程就可以。 对所有的表操作都可以通过使用数组来实现,虽然数组是动态指定的,但是还是原创 2017-05-04 19:03:07 · 544 阅读 · 0 评论 -
数据结构学习笔记(一)
学习数据结构能是我们更好的了解对数据的定义,操作等活动,也能够使我们对于数据的种类等能能够做到合理的区分,具体问题具体分析:一,数据结构的一些基本概念:首先,我们了解一下数据结构的定义; 一般的用计算机解决问题的过程如下:数学模型->算法->程序,程序设计是为计算机处理问题编制一组指令,算法则是处理解决问题的策略,二数据结构呢可以认为是数据的组织形式与操作形式。Nik原创 2017-04-27 08:29:02 · 417 阅读 · 0 评论 -
数据结构学习笔记(四)之表、栈和队列
本次讨论最简单的3中数据结构,接着上一个笔记的ADT的内容来说,对于集合ADT除了有关自身创建等的操作之外,还可以包括对数据的操作等,例如,查找,删除,增加等操作,数据结构不同,其对于不同的数据操作方式所体现的处理能力不同,具有不同的时间复杂度和空间复杂度。 表的定义: 表,顾名思义,直接的如我们的Excel表格,而在这里我们讨论的表与其有些不同,我们讨论它一行的情况,这原创 2018-02-10 21:21:54 · 234 阅读 · 0 评论 -
数据结构学习笔记(五)散列、分离链接法
散列为我们一般性的以一种用于常数时间执行插入,删除和查找表的技术,但是那些需要排序信息的将不会得到有效的支持,因此如findMax,findMin等都是散列操作都是散列所不支持的。 散列的核心就是一个可靠的散列函数。1.假如输入的关键字是整数:一般性的合理的方法就是直接返回键值对表的大小的长度的取余运算的结果,为了减少由上述过程带来的一些不必要的麻烦,一般选择将表的大小设置为...原创 2018-05-15 10:06:55 · 335 阅读 · 0 评论 -
数据结构学习笔记(六)散列之线性探测法、平方探测法
线性探测法:线性探测法中函数是位置i的函数,这相当于当发生冲突的时候,逐个单元甚至回绕查询到一个空单元,也就是说数据都需要放置在这一个表格中,当发生冲突的时候就出发上面的机制,不过这样做,花费的时间是相当多的,这样单元会形成一些区域块,其结果称作为一次聚焦,也就是是说经过多次的查找才能找到一个空的单元: Hkey(x) = Hkey(n)+ i;也就是当出现和n重复的hash值的时候,则需要...原创 2018-05-15 10:47:25 · 8617 阅读 · 1 评论 -
数据结构学习笔记(七)--二叉查找树
对于大量的数据的输入,我们采用另一种大部分操作时间为log的简单数据结构,同时,在这个情况下线性列表访问的时间太慢,不适合使用,这种简单的数据结构叫做二叉查找树,其是两种库集合类TreeSet和TreeMap实现的基础。 树的定义,一棵树有一个根节点和许多的子节点,每个子节点可能有一个或者是多个子节点,并且,没有儿子的节点成为叶节点。具有相同父节点的叫做兄弟,从某个节点n1到节点nk原创 2018-05-23 10:40:32 · 269 阅读 · 0 评论