算法精解二(C语言版)

数据结构简介

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

效率

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

抽象 

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

重要性

         数据结构是可重用的,因为他们应该是模块化且上下文无关的,他们是模块化的,因为每种数据结构都是各自指定的接口,通过它访问数据结构中存储的数据是受限的。也就是说,只能通过定义结构的操作来访问数据。数据结构是上下文无关的,因为他们能在任意环境或上下文中应用于任意一种类型的数据之上。在C语言里,通过使用指向void类型的指针来管理任意类型的数据,而不是在数据结构内部维护一份数据的私有副本。当面对数据结构时髦我们通常会想到特定的行为或者操作,我们通常也希望对它们执行这些操作。例如,给定一个链表,我们会自然地想到插入、移除、遍历和计算元素个数等操作。数据结构加上这些基本操作就称为抽象数据类型(ADT)。一个抽象数据类型的操作和组成它的公共接口。抽象数据类型的公共结构精确地定义了我们可以对它做什么。建立并遵守抽象数据类型的结构是绝对必要的,应为这会使我们能更好地管理程序的数据,使得程序变得更容易理解也更容易维护。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值