数据结构和算法
文章平均质量分 91
雨田说码
这个作者很懒,什么都没留下…
展开
-
07-树(Tree)结构分析
树是一种非线性的数据结构,它是由n(n>=0)个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:1.每个节点有零个或多个子节点;2.没有父节点的节点称为根节点;3.每一个非根节点有且只有一个父节点;4.除了根节点外,每个子节点可以分为多个不相交的子树二叉树的每个节点最多有两个子节点。二叉搜索树其实就是二叉树,只不过又有一些额外的条件限制。原创 2022-10-28 13:55:45 · 1315 阅读 · 0 评论 -
06-散列(Hash)基础分析
散列表又称哈希表(Hash Table),是一种将键(key)映射到值的数据结构,是对数组应用的推广,它基于“散列设计算法”将关键码(Key)映射为数组下标,然后将关键码对应的数据存储在数组中。这个过程类似于字典设计(基于字典关键码找到对应的词条)。如图所示:其中,图中的buckets为桶数组(又称“散列表”-hash table),桶数组中基于桶(bucket)直接存储数据。负载因子为0.75f 是空间与时间的均衡如果负载因子小,意味着阈值变小。原创 2022-10-28 13:49:03 · 1581 阅读 · 0 评论 -
05-队列(Queue)结构应用分析
队列(Queue)这种结构非常好理解。你可以把它想象成超市中排队结账,排在前面的先结账出队,排在后面的后结账出队。后来的人只能站在末尾,不允许插队。类似超市排队结账,还有地铁,机场,火车站排队进站等这种满足先进者先出结构,就是我们要探讨的典型的“队列”。队列(Queue)跟栈(Stack)非常相似,也是操作受限的一种逻辑结构,最基本的操作也是两个:入队(enqueue),放一个数据到队列尾部;出队(dequeue),从队列头部取一个元素。}原创 2022-10-28 12:52:32 · 867 阅读 · 1 评论 -
04-栈(Stack)结构应用分析
栈(Stack)是一种先进后出(FILO-First In Last Out),操作上受限的线性表。其限制指的是,仅允许在表的一端进行插入和删除运算。这一端称为栈顶(top),相对地,把另一端称为栈底(bottom)。如图所示:对于栈而言,我们生活中也有很多这样的应用,例如一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。后进者先出,先进者后出,这就是典型的“栈”结构。原创 2022-10-28 08:38:43 · 837 阅读 · 0 评论 -
03-链表(Linked List)应用分析
}循环链表就是一种特殊的单向链表,只不过在单向链表的基础上,将尾节点的指针指向了Head节点,使之首尾相连。如图所示:单向循环链表相对于单向链表的优点是从链尾到链头比较方便。当要处理的数据具有环型结构特点时,就特别适合采用单向循环链表,这样可以很大程度上减少代码量。双向链表与单向链表的区别是前者是2个方向都有指针,后者只有1个方向的指针。双向链表的每一个节点都有2个指针,一个指向前驱节点,一个指向后继节点。如图所示:双向链表相对于单向链表,需要额外的一个空间来存储前驱结点的地址。原创 2022-10-28 08:33:28 · 996 阅读 · 0 评论 -
02-数组(Array)应用分析
数组是一个有限的、类型相同的数据的集合,在内存中是一段连续的内存区域,这段内存区域一旦定义,其大小不改变。数组的长度在定义时确定,数组中的元素的默认值由其数组类型决定。可通过数组下标访问数组中元素,下标的起始位置永远从0开始。原创 2022-10-28 07:44:08 · 1105 阅读 · 0 评论 -
01-数据结构和算法入门
数据结构一般泛指数据的逻辑结构和存储结构,独立于具体编程语言。例如,我们在浏览一个网页时,看到的页面布局结构。拿到一本书时,看到的书的目录结构。打开手机上的地图软件,看到的图结构等等都和我们所说的数据结构有关系。在编程领域中,可以将程序理解为数据结构+算法。算法就是操作特定结构数据的方法或技巧,具备正确性,可行性,有穷性,输入,输出等特征。例如对数据的查找,排序,运算等都会涉及到具体算法的应用。数据的逻辑结构描述的是数据元素之间的逻辑关系,与数据的存储无关,是独立于计算机的一种结构。原创 2022-10-28 07:34:09 · 1518 阅读 · 1 评论