数据结构是对在计算机内存中(有时在磁盘中)的数据的安排。数据结构包括数组、链表、栈、二又树、哈希表等等。算法对这些结构中的数据进行各种处理,例如,想找一条特殊的数据项或对数据进行排序 掌握这些知识以后可以解决哪些问题呢?
粗略地估计一下,上述知识可以用于三类情况: . 现实世界数据存储 . 程序员的工具 . 建模 这些并不是必须遵循的分类讨论一下这些问题。
现实世界数据存储 在这里讨论的许多数据结构和技术与如何处理现实世界数据存储问题紧密相连。现实世界数据指的是那些描述处于计算机外部的物理实体的数据。看几个例子:一条人事档案记录描述了一位真实人的信息,一条存贷记录描述了一个真实存在的汽车部件或杂货店里的一种商品,一条财务交易记录描述了一笔支付电费实际填写的支票。 举一个非计算机的现实世界数据存储的例子,有一叠3×5的索引卡片。这些卡片可以破用在不同的场合。如果每张卡上写有某人的姓名、地址利电话号码,那么这叠卡片一定是一本地址簿。如果每一张卡片上写有家庭拥有物的名称、位置和价值,那么这一定是一本家庭财产清单。 当然,索引卡计并不能代表现在的科技发展水平。几乎所有以前用索引卡片处理的事务现在都可以用计算机来处理。
如果想将旧式的索引卡片系统更新为计算机程序,便有可能发现会被如下问题所闻扰; . 如何在计算机内存中存放数据 . 所用方法适用于100张产片吗?那l000张呢?1000000张呢. 所用方法能够快速地插入新卡片和删除老卡片. 它能快速地查找一张特定的长片吗. 若想将卡片按照字目的顺序排列,又应该如何去排呢?
这里将会讨论类似于一叠索引卡片这种形式的数据结构。 然而,人多数程序比索引卡片要复杂得多。想像一下机动车管理局的数据库,这个库被用来记录驾驶员的执照的情况;或者