1.1 数据结构简介

1.1 数据结构简介

数据有各种形式和大小,但通常它们可以以相同的方式来组织。比如,设想有一张清单,上面列出了需要做的事情,配方中的成分列表,某门课程的阅读清单。尽管每种都包含不同类型的数据但它们包含的数据都以一种相似的方式进行组织:列表。列表是一种简单的数据结构。当然,同样还有许多其他类似的方法来组织数据。在计算机科学领域,一些最常用来组织数据的方式有:链表,堆栈,队列,集合,哈希表,树,堆,优先级队列,图。本书将讨论所有上述的数据结构。使用数据结构的三个原因是:效率,抽象,重用性。 

效率

        数据结构组织数据的方式使得算法变得更加高效。例如,考虑一下我们该如何组织数据以对其进行检索。最简单的方式是将数据存放到数组中,然后遍历其中每一个元素直到找到我们需要的元素为止。然而这种方式确是低效的,因为在很多情况下我们需要遍历数组中的每一个元素才行。通过使用另一种数据结构比如哈希表(见第8章)或者二叉树(见第9章)我们可以显著的提高检索的速度。

 抽象

        数据结构使我们以一种更加容易理解的方式去看待数据。也就是说它们为解决问题提供了一层抽象概念。比如,要把数据存入一个堆栈(见第6章),我们可以把精力集中在我们可以对堆栈做什么操作上,例如压栈和出栈,而不是实现每种操作的具体细节上。换句话说,数据结构使我们以不那么“程序化”的方式去看待程序。

 重用性

        数据结构是可重用的,因为它们应该是模块化且上下文无关的。它们是模块化的因为每种数据结构都有各自指定的接口,也就是说我们只能通过定义的接口来访问操作数据。数据结构是上下文无关的,因为它们能在任意环境或上下文中应用于任意一种类型的数据之上。在C语言里我们通过使用指向void类型的指针的方式来管理任意类型的数据,而不是在数据结构内部维护一份数据的私有拷贝。

当面对数据结构时,我们通常会想到特定的行为或者操作。例如,给定一个链表,我们会自然的想到插入,移除,遍历和计算元素个数等操作。数据结构加上这些基本操作就称为抽象数据类型(ADT)。一个抽象数据类型的操作就组成它的公共接口。抽象数据类型的公共接口精确地定义了我们可以对它做什么。建立并遵守抽象数据类型的接口是绝对必要的,因为这会使我们能更好的管理程序的数据使得程序变得更容易理解也更容易维护。

 

PS:

1、此书(Mastering Algorithms with C)译稿版权归本人(Love_Lei)及好友(bigship)共同所有,未经本人同意谢绝一切转载,并不得抄袭,模仿,盗版!更请大家监督盗版之人!

2、由于本人水平有限,如对译文有任何建议和异议,欢迎大家留言指正,我们共同讨论学习!谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值