计算机数据结构简单介绍

对于从事软件开发工作人员来说,数据结构掌握的不好,以后想发展的有多好肯定是不可能的。有这么一句话是这么说的:计算机程序=数据结构+算法,从中就体现出数据结构的重要程度,可以说掌握好数据结构,就相当于掌握的编程世界的一半了。

如果说把数据结构映射到现实生活中,它跟画画或摄影很类似,不知你是否画过画,或者看过专业的画家创业的过程。一般人画画通常拿出笔就直接画了,看着公园的一朵花,就直接从外形开始画起来,这种画法导致的结果是,画到后面比例不对,而且常常画的不像。

那么针对专业画家呢,他是怎么画画的呢。比如他去画画一条鱼,他会做几个简单的几何图形,比如头是一个大圆和两个小圆,身子是一个椭圆,尾巴是三角形。如果有好几条鱼,专业画家会事先安排好位置,为何画画美观,事先景点布置也会用一些几何图形的形状。这些都是通过淡淡的铅笔勾勒好,等真正画的时候。需要把圆、椭圆和三角形平滑过渡下,这样就画成鱼了。如果不掌握这种绘画方式,是走不进专业的大门。

那么对于计算机编程来说,完成一个程序相当于创作一幅画。如果一开始就一行行代码去实现功能,这是低水平的做法,有时候看上去很快,但实际上漏洞百出,回头需要不断修补才行。如果采用专业画家的做法,就是理解需求之后,抽象出具体的基本几何形状这样的基础块,然后用算法将这些模块进行组合,写出符合需求的程序。

这里就体现出计算机的数据结构的重要性,在计算机科学中,数据等同于点,数据结构就是数据常用的具体关系。今天简单介绍一个最常用的数据结构——线性表。

线性表相当于几何图形中直线,也是最基本的数据结构。由于线性表本身就是一个抽象概念,在计算机中具体实现方式有两种,一种是数组,另外一种是链表。

数组这个概念很简单,就是一组编了号的固定大小单元。比如说有个整数数列,从a0、a1、a2……a99,这就是数组了。也好比单位里员工的工号,按照顺序排序下来,也是一串数组。但是数组这个数据结构有一个大的缺陷就是插入新的数据比较困难,插入一个数据需要移动位置。比如,在10个数字中间,想插入第5个数字,那就是需要把原来第五个位置移动到第六个位置,第六个位置的数字移动到第七个,以此类推。

但是数组查找时候比较方便,因为都是已经排序好了。为了解决数组出现的问题,计算机科学家们又发明了一种叫做链表的线性数据结构。

所谓链表,其实就如同我们买东西时排队一样,每个人只要记得前面或者后面的一个人是谁就可以了,彼此没有编号一说。

比如要记录下这周造访的客户名单,王二之后是张三,张三之后是李四,李四之后是赵六……如果要把新加入的王五安排在李四和赵六之间,很简单,只要修改一下这个链表,把李四后面的指针指向王五,把王五后面的指针指向赵六即可。这样一来,插入一个新的数据就是一件很容易的事了。

但是链表的话,对于查找就是不方便了,因为没有编号一说,因此必须要从头数一遍,一直数到第五个。如果一个列表有几百万个记录单元,数一遍可是很花时间的事情。

凡事有利有弊,在计算机方面设计都是如此,好的工程师是有选择的采用一定的设计,会通过不同方法进行补救出现的问题。还有一点就是要学会专业人士掌握的工具和方法,把复杂的问题简单话。要说专业人士与业余人士的区别就在于,是否有一套专业的方法论,是否掌握简单基本设计和结构,在面对一个问题会不会事先分析,运用一套系统的科学素养去对待。总之,通过学习计算机数据结构,让我明白了,通过专业的学习,在认知上会更系统,在行动上更严谨,在做出的成果物会更稳定。

前一篇文章:Google的一道面试题

天,每天坚持写作之/,爱上自己的每一天!

我在「知识星球」上开了个专栏,名字叫做“第二身份试验场”,主旨是每个人应该多在自己身上投资,不断挖掘培养自身优势,打造第二收入。同时,我会记录我每日的成长经历与感悟,希望在年的每一天里跟大家一起共同精进:发生、记录、感悟、反思、分享。

即刻加入,点击阅读原文,或扫一扫以下







































天津治疗白癜风医院
昆明治疗白癜风医院



转载请注明:http://www.92nongye.com/zyjs/zyjs/204621547.html