摘要: 第十七章 高级数据表示四、二叉搜索树先梳理一下链表和数组方式对几种操作的利弊特点:a.访问:链表形式,必须从首节点开始找起,直到要访问的节点为止,这个称为顺序访问。而数组方式则方便的多,可直接定位到某个元素,这称为随机访问。b.插入/删除:对于链表形式,插入或删除操作仅需要修改前续和后续节点就可以完成;而数组方式需修改被增加或删除元素后面所有的元素。c.查找/搜索:其实也是一种访问形式。一般情况,对于顺序排列的“数据堆”,可以通过"折半查找法”非常效率的进行查找。可折半查找,首先得定位到中间的元素,对数组而言,因为有下标,很容易定位;而对于链表定位中间元素,首先要知道数据堆里总共有多 阅读全文
posted @ 2013-07-12 20:59 tsembrace 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 第十七章 高级数据表示 三、队列ADT 前面通过一个单链表形式来构建一个数据堆,单链表是通过在结点中设置一个指向下一节点的指针成员来实现组合。对于队列形式,有几个特点:1、依然是线性序列;2、只能在队尾部增加节点;3、只能在队首部删除节点。 1、队列ADT的定义描述 2、队列ADT的操作描述及实现 阅读全文
posted @ 2013-07-12 16:09 tsembrace 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 第十七章 高级数据表示(一)一、抽象数据类型抽象数据类型(abstract data type:ADT)是指由用户依据实际需求所创建的某种数据类型,它可以是C语言中的任何数据类型,甚至是基本类型,或数组,复杂的就会用到结构。为何说是抽象?是因为ADT并不会是固定某种数据类型,而是依据实际应用需求中提炼出来的某种数据类型的表达方式。那么,如何定义一种ADT呢?在C语言里,定义一种数据类型,包括两方面:一方面是数据存储方式的描述(对取值的限定),另外一方面是对该类型的可使用的操作的定义。比如:定义一个int型数据a,则表示a取值范围是-32768~32767中的整数;同时a可以使用所有对整型数据的 阅读全文
posted @ 2013-07-12 12:51 tsembrace 阅读(524) 评论(0) 推荐(0) 编辑