阅读:0       作者:解学武

数据结构是什么

从本节开始,您将系统地学习数据结构,首先带大家了解一下什么是数据结构。


发展至今,数据结构也没有标准的定义,仁者见仁智者见智。市面上有很多讲解数据结构的书籍和视频,关于数据结构是什么,一些专家给出的答案是:

1) 数据结构是指带结构的数据元素的集合。
2) 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
3) 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

每一种回答都试从不同的视角诠释对“数据结构”的理解,但遗憾地是,只有具备一定数据结构功底的人才能领悟这些话的含义。对于从未接触过数据结构的读者来说,根本不知道在说什么,打死也不可能理解。

很多人学了长时间的数据结构,仍然一脸问号,不知道学数据结构有什么用,归根结底就是没有搞清楚数据结构是什么。

接下来,我就用通俗易懂的语言回答“数据结构是什么”这个问题。

数据结构是什么

数据结构作为一门独立的学科,是从 1968 年才开始的。在这之前,数据结构的内容散布在其他的计算机课程中,比如编译原理、操作系统等。

数据结构没有想象得那么复杂,它就教会你一件事:如何有效地存储数据。

在数据结构中,所有能被计算机处理的信息都称为数据,比如数值、字符、图像、音频、视频等。

很多人觉得,存储数据是一件很简单的事情,各个编程语言都提供有存储数据的方法,比如常见的变量、数组等,甚至还可以将数据存储到文件中。如果只是单纯地存储数据,的确不是很难。真正的难点在于,存储数据的同时还能将数据之间的关系也存储起来。

举个简单的例子,每家每户都有家谱或者族谱,记录着一个家族世系繁衍的信息,比如图 1 这张家谱图:


图 1 家谱图

存储这张图时,只存储 {张亮 , 张平 , 张晶 , 张磊 , 张华 , 张群} 这些人名是不行的,还要将他们之间的关系也存储起来,比如张亮是张平的父辈、是张磊的祖辈等等。

再比如,大家肯定用过导航软件(比如高德、腾讯地图等),要想实现精确导航,软件必须存储大量的数据,包括各个省、市、区、县的道路、建筑物、红绿灯等位置信息,以及每个地区的天气信息、高速路况信息等等。


图 2 导航示意图

这些信息都是数据,而且数据之间的关系错综复杂,能否正确存储这些关系,直接决定着软件导航的精准度。

类似家谱图、道路信息这样的场景,存储数据本身并不难,真正的难点在于如何存储数据之间的关系。通过学习数据结构,你将 get 到很多存储数据的方案,实现在存储数据的同时,还能正确存储数据之间的关系。

总结

数据结构是什么,在我看来,它是一门学科,教你如何存储那些具有复杂关系的数据。

数据结构存储数据的思路(思维、思想),可以用任意一种编程语言实现。换句话说,无论你掌握哪种编程语言,也无论你从事什么开发工作,只要你和数据打交道,就一定会用到数据结构。