
数据结构
文章平均质量分 79
数据结构与算法教程,数据结构C语言版教程,内容来自C语言中文网
happy 天堂
这个作者很懒,什么都没留下…
展开
-
第二章 线性表_2.4什么是单链表
链表,别名链式存储结构或单链表,用于存储逻辑关系为 "一对一" 的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。例如,使用链表存储{1,2,3},数据的物理存储状态如图 1 所示:图 1 链表随机存储数据我们看到,图 1 根本无法体现出各数据之间的逻辑关系。对此,链表的解决方案是,每个数据元素在存储时都配备一个指针,用于指向自己的直接后继元素。如图 2 所示:图 2 各数据元素配备指针像图 2 这样,数据元.原创 2022-03-13 22:34:21 · 121 阅读 · 0 评论 -
第二章 线性表_2.3顺序表的基本操作(C语言详解版)
顺序表插入元素向已有顺序表中插入数据元素,根据插入位置的不同,可分为以下 3 种情况:插入到顺序表的表头; 在表的中间位置插入元素; 尾随顺序表中已有元素,作为顺序表中的最后一个元素;虽然数据元素插入顺序表中的位置有所不同,但是都使用的是同一种方式去解决,即:通过遍历,找到数据元素要插入的位置,然后做如下两步工作:将要插入位置元素以及后续的元素整体向后移动一个位置; 将元素放到腾出来的位置上;例如,在{1,2,3,4,5}的第 3 个位置上插入元素 6,实现过程如下:因此..原创 2022-03-13 10:48:57 · 252 阅读 · 0 评论 -
第二章 线性表_2.2顺序表
顺序表,全名顺序存储结构,是线性表的一种。通过《什么是线性表》一节的学习我们知道,线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。不仅如此,顺序表对数据的物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。例如,使用顺序表存储集合{1,2,3,4,5},数据最终的存储状态如图 1 所示:图 1 顺序存储结构示意图由此我们可以得出,将“具有 '一对一' 逻辑关系的数据按照次序连续存储到一整.转载 2022-03-13 10:40:09 · 142 阅读 · 0 评论 -
第二章 线性表_2.1什么是线性表
通过前面的学习我们知道,具有“一对一”逻辑关系的数据,最佳的存储方式是使用线性表。那么,什么是线性表呢?线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。图 1 "一对一"逻辑关系的数据如图 1 所示,这是一组具有“一对一”关系的数据,我们接下来采用线性表将其储存到物理空间中。首先,用“一根线儿”把它们按照顺序“串”起来,如图 2 所示:图 2 数据的"线性"结构图 2 中,左侧是“串”起来的数据,右侧是空闲的..转载 2022-03-13 10:19:45 · 168 阅读 · 0 评论 -
第一章 数据结构入门_1.8学好数据结构的重要性
通过前面的学习我们知道,数据结构并不是一门具体的编程语言,它教会我们的是一种思维方式,即如何以更优的方式存储数据。或者正是由于这个原因,很多读者感觉数据结构虚无缥缈,无法触及,不如学习 Python、Java 等这些编程语言可以随学随用、掷地有声,久而久之觉得学习数据结构没用。那么,数据结构真的无用吗?当然不是。作为计算机专业最重要的必修学科之一,计算机专业考研的必考知识,以及众多 IT 公司笔、面试的侧重考点,仅仅这些光环,就足以说明学习数据结构的重要性。毋庸置疑,数据结构不仅有用,更应该是每个程序员原创 2022-03-13 10:09:26 · 1071 阅读 · 0 评论 -
第一章 数据结构入门_1.7数学不好,对学数据结构有影响吗?
很多初学者自认数学基础不好,怀疑这将是学习数据结构不可逾越的大山,对学习数据结构没有足够的信心。总的来说,数学基础不是学习数据结构的必备条件,但好的数据基础对学习数据结构大有助益。这个问题,其实和“英语不好,可以学习编程吗?”同属一类。不可否认,英语基础好对于学习编程确实是很有帮助的,但它并不是学习编程不可跨越的鸿沟。事实上,只有从优秀程序员跃升为顶尖程序员时,英文基础(需要阅读一些英文资料)的桎梏才会凸显出来,但也并非无法克服。数学和数据结构之间的关系也是如此。注意,英语基础薄弱并不等价于英语 0 基原创 2022-03-13 10:00:44 · 382 阅读 · 0 评论 -
第一章 数据结构入门_1.6数据结构如何自学,效率更高?
自从数据结构教程发布以来,很多读者向我询问应该如何自学数据结构,或者怎么才能学好数据结构和算法?本节将结合我的个人经验,给读者介绍一些学习数据结构和算法的方法,帮大家规避一些学习数据结构和算法过程中可能会踩的坑。首先我认为,学习数据结构和算法有一个很重要的前提,就是至少熟练掌握一门编程语言。学习数据结构和算法,实践是非常重要的,如果仅仅是空有理论而不实践,反复学多少遍都没用。本教程以 C 语言作为教学语言,当然读者也可以在掌握 C++、Java、Python 等语言的基础上学习数据结构和算法。因为无论是原创 2022-03-13 09:55:35 · 532 阅读 · 0 评论 -
第一章 数据结构入门_1.5数据结构和算法的关系和区别
由于大量数据结构教程中都将数据结构的知识和算法掺杂起来讲,使很多初学者认为数据结构就是在讲算法,这样理解是不准确的。数据结构和算法之间完全是两个相互独立的学科,如果非说它们有关系,那也只是互利共赢、“1+1>2”的关系。最明显的例子,如果你认为数据结构是在讲算法,那么大学我们还学《算法导论》,后者几乎囊括了前者使用的全部算法,有什么必要同时开设这两门课程呢?我们还可以从分析问题的角度去理清数据结构和算法之间的关系。通常,每个问题的解决都经过以下两个步骤:分析问题,从问题中提取出有价值的数据,原创 2022-03-13 09:48:10 · 152 阅读 · 0 评论 -
第一章 数据结构入门_1.4时间复杂度和空间复杂度
在学习具体的数据结构和算法之前,每一位初学者都要掌握一个技能,即善于运用时间复杂度和空间复杂度来衡量一个算法的运行效率。所谓算法,即解决问题的方法。同一个问题,使用不同的算法,虽然得到的结果相同,但耗费的时间和资源肯定有所差异。就比如拧一个螺母,扳手和钳子都可以胜任,但使用钳子拧螺母肯定没有扳手的效率高。图 1 解决问题的方式有多种这也就意味着,如果解决问题的算法有多种,我们就需要从中选出最好的那一个。那么,怎么判断哪个算法更好(或者更优)呢?“好”算法的标准解决一个问题的.原创 2022-03-13 09:46:43 · 171 阅读 · 0 评论 -
第一章 数据结构入门_1.3数据的逻辑结构和存储结构
《数据结构有哪些》一节讲到,数据的存储方式可分为线性表、树和图三种存储结构,而每种存储结构又可细分为顺序存储结构和链式存储结构。数据存储方式如此之多,针对不同类型的数据选择合适的存储方式是至关重要的。那么,到底如何选择呢?数据存储结构的选择取决于两方面,即数据的逻辑结构和存储结构(又称物理结构)。逻辑结构数据的逻辑结构,简单地理解,就是指的数据之间的逻辑关系。图 1 家庭成员关系图例如,图 1 显示是一张家庭的成员关系图,从图中可以看到,张平、张华和张群是兄弟,他们的父亲是张转载 2022-03-12 23:08:33 · 213 阅读 · 0 评论 -
第一章 数据结构入门_1.2数据结构到底学什么?
123原创 2022-03-12 23:00:51 · 133 阅读 · 0 评论 -
第一章 数据结构入门_1.1什么是数据结构
当你决定看这篇文章,就意味着系统学习数据结构的开始。本节,我们先来讲什么是数据结构。数据结构,直白地理解,就是研究数据的存储方式。我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如同我们使用数组存储{1,2,3,4,5}是为了后期取得它们的值,无缘由的数据存储行为是对存储空间的不负责任。因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好的方式来存储数据,而这也是数据结构的核心内容。例如,一直以来大家面对的数据存储,都是类似存储 1、2、{a,...转载 2022-03-12 22:41:25 · 145 阅读 · 0 评论