程序员

数据结构是个什么玩意儿

2020-11-12  本文已影响0人  捡历史的小木板

很久很久以前,一位王子叫做小明。他想要救出被魔王抓走的公主,于是他决定绘制一张前往魔都的地图。在都城和魔都之间,有巨人国,矮人国和冰火岛。这些地方之间的箭头代表了能不能从一个地方通往另一个地方。比如说,因为有箭头从巨人国指向冰火岛,所以小明是可以从巨人国前往冰火岛的。而冰火岛并没有箭头指向巨人国,所以小明不能从冰火岛前往巨人国。

小明数学不好,想要电脑帮忙计算一下从都城到魔都的最佳路线。可他看着眼前的地图叹了一口气,他倒是知道地图上的箭头代表啥,可是电脑不懂啊。电脑不是人,你没有办法给他一张图,然后跟他说图上的这个代表这个,那个代表那个。要怎么才能让电脑知道,这些地点之间存在着某种关系,然后把这种关系表示出来呢?

这就是数据结构这个概念的由来了。数据结构用一句话来概括,就是在电脑上存储数据的一种方式。因为电脑不是人,你想跟他交流,让他帮你算数,得用特殊的方式才行。你得把数据存储在电脑能够理解的结构中,这样在电脑进行运算的时候,才能很方便地拿出来运用。

那小明同学该怎么存储他的数据,才能在电脑上表示出地图上的箭头代表啥呢?

第一种方式最简单粗暴。我们可以直接枚举出所有可通行的路径,像这样:

都城,巨人国

巨人国,冰火岛

冰火岛,都城

巨人国,矮人国

冰火岛,魔都

魔都,矮人国

…….

这样的表示方式其实就是数据结构的一种了,它的名字叫数组,英文名是array,是最经常使用的数据结构之一。我们之后会更详细地讲到它。

第二种方式更为巧妙一些。我们可以注意到,箭头两端的两个地点是存在某种关系的:指向的那端可以到达被指向的那端。因此对于图中的每个地点,我们可以列出他所能到达的所有地点,像这样:

都城:巨人国

巨人国:冰火岛,矮人国

冰火岛:都城,魔都

魔都:矮人国

这其实也是数据结构的一种。他的名字叫哈希表,英文名是hashmap。

当我们用某种特定的方式—某种数据结构—存储了我们想要存储的数据以后,我们就可以利用它解决各种各样的实际问题了。打个比方,如果小明用第二种方式存储了数据,那他想要知道他能不能从都城到冰火岛的时候,就可以直接问电脑:“冰火岛在不在都城对应的那栏数据里面?” 电脑找了找,发现都城对应的那栏数据里只有巨人国,没有冰火岛,它就会告诉你没有。这样一来,小明就快速得到了他想要的答案。 

小明现在知道该怎么在电脑上存储地图信息了,但他离救出公主还有很遥远的距离。小明最终能否能救出公主呢,且听下回分解 :)

上一篇下一篇

猜你喜欢

热点阅读