C和指针——经典抽象数据类型

内存分配:所有的ADT(抽象数据类型)都必须确定一件事情——如何获取内存来存储值。有三种方案:静态数组、动态分配的数组和动态分配的链式结构。

堆栈:堆栈(stack)这种数据最鲜明的特点就是其后进先出(LIFO)的方式,基本的堆栈操作通常被称为push和pop。push就是把一个新值压入到堆栈的内部,pop就是把堆栈顶部的值移除堆栈并返回该值。堆栈只提供对它的顶部值的访问。

在传统的堆栈接口中,访问顶部元素的唯一方法就是把它移除。另一类堆栈接口提供三种基本操作:push、pop和top。push的操作和前面描述一样,pop只把顶部元素从堆栈中移除,并不返回这个值。top返回顶部元素的值,但它并不把顶部元素从堆栈中删除。

队列:队列和堆栈的顺序不同,它是一种先进先出(FIFO)的结构。

当满足如后条件时,队列为空:(real+1)%queue_size==front

当满足如后条件时,队列为满:(real+2)%queue_size==front

二叉树:树是一种数据结构,它们要么为空,要么具有一个值并具有零个或多个孩子,每个孩子本身也是树。这个递归的定义正确地提示了一个树的高度并没有内在的限制。二叉树(binary tree)是树的一种特殊形式,它的每个节点至多具有两个孩子,分别称为左孩子和右孩子。二叉树具有一个额外的属性:每个节点的值比它的左子树的所有节点的值都要大,但比它的右子树的所有节点的值要小。注意这个定义排除了树中存在值相同的节点的可能性。