什么是数据结构
数据存储在计算机内存中,数据存储于内存时,决定了数据顺序和位置关系的就是“数据结构”。数据结构能决定数据的顺序和位置关系,选择合适的数据结构可以提供内存的利用率。
1、电话簿的数据结构-从上往下顺序添加
假设有1个电话簿,每当得到了新的电话号码就从上往下的顺序记录在电话簿上面。
姓名 |
电话号码 |
张三 |
15678934213 |
李四 |
15670934213 |
王五 |
15671934213 |
…… |
…… |
假设想给“小阳”打电话,但是因为数据都是按获取顺序排列的,所以我们并不知道“小阳”的号码具体在哪儿,只能从头一个一个网下找(虽说可以从后往前找或随机找,但是效率并不会比从上往下找高)。如果电话簿上号码不多很快就能找到,如果存了500个电话号码,那找起来就不太容易了。
2、电话簿的数据结构-按姓名的拼音顺序排列
因为数据都是以字典顺序排列的,所以它们是有“结构”的。
姓名 |
电话号码 |
东东 |
15678934213 |
李四 |
15670934213 |
王五 |
15671934213 |
…… |
…… |
通过这种方式给联系人排序的话,想要找到目标人就轻松多了。通过姓名拼音的首字母就能大概推测出数据的大致位置。
如何往这个按拼音顺序排列的电话薄里面添加数据?
假设需要将“萌萌”记录到电话薄中,由于数据按姓名的拼音顺序排列,所以需要将“萌萌”放到“李四”和“王五”的中间,将“王五”往下挪一行,然后清除本行内容,如果有500个操作,一次操作10秒,1小时也完成不了这项工作。
两种方法的优缺点
- 数据按照获取顺序排列的话,虽然添加数据结构很简单,只需要把数据加到最后就可以了,但是查询的时候比较麻烦;以拼音顺序来排列的话,虽然查询比较简单,但是添加数据又会比较麻烦。
- 这两种方法各有优缺点,具体要选择哪种取决于这个电话簿的用法。如果电话簿做好就不再添加新的号码,那么后者更好;如果需要经常添加新号码,但不怎么查询就应该选前者。
3、电话簿的数据结构-将获取顺序与拼音顺序结合
将1、2的优点结合起来。就是分别用不同的表存储不同的拼音首字母,比如表L、表D等。然后将同一张表中的数据按照获取顺序进行排列。
表L
姓名 |
电话号码 |
兰虎 |
15678934213 |
丽丽 |
15670934213 |
李强 |
15671934213 |
…… |
…… |
表D
姓名 |
电话号码 |
董超 |
15678934219 |
代阳 |
15670934210 |
丁香 |
15671934211 |
…… |
…… |
- 这样添加新数据的时候直接将数据添加到对应表的末尾就可以了,而查询数据的时候只需要在对应的表中进行查找即可。
- 因为各个表的存储数据依旧没有规律,所以查询的时候需要从表头开始查找,但比查询整个电话簿来说还是轻松不少。数据结构的思路就和制作电话簿一样。将数据存储与内存,根据使用目的选择合适的数据结构,能够提供内存的利用率。