C的高级数据表达

抽象数据类型(Abstract Data Types,ADTs)

一个类型(type)确定了两方面的信息:一系列性质和一系列操作。要定义一个新的数据类型首先要提供存储数据的方式(比如定义一个结构体),然后还要提供处理数据的方式。将一个抽象的数据变具体有三步:

1. 提供这个类型的性质和能够对它进行的操作的抽象描述,这个描述不应该局限于某个特殊的实现,甚至不应该被局限于某种编程语言。这种形式化的描述叫做抽象数据类型(ADT)

2. 开发能够实现ADT的编程接口,即表明如何存储数据,描述能够进行所需操作的一系列函数

3. 通过代码实现接口


数组(array)和链表(linked list)

数组

优点:C直接支持,允许随机访问

缺点:必须要确定大小,插入和删除比较耗时

链表

优点:可以在运行时确定大小,插入和删除较快

缺点:不支持随机访问,需要进行额外的编程支持

数组可以通过下标立刻访问某个元素,这叫随机访问(random access);而链表则必须从第一个节点开始移动到需要的节点,这叫顺序访问(sequential access)


二叉搜索树(binary search tree)

树中的每个节点都有一个项目和两个指向其他节点的指针,其被指向的节点叫做子节点(child node)。对每个节点来说,左边子节点中项目在它的项目之前,右边子节点的项目在之后。最上层的节点叫做根节点(root)。如果一个二叉搜索树是fully populated,则每一层的节点数都是上一层两倍



你可能感兴趣的:(C的高级数据表达)