一、数组array
定义:n个相同数据类型的元素构成的序列,属于线性列表的一种。
实例:
二、链表chain
定义:0个或多个节点(node)构成的序列,每个节点包含数据和指针(pointer),指针指向其他节点,null表示无后继节点。属于线性列表的一种。
三、堆heap
定义:链接。属于线性列表的一种。
四、栈stack
定义:链接。属于线性列表的一种。
五、队列queue
定义:链接。属于线性列表的一种。
六、图graph
定义:图可以看做是“顶点”或者“节点”构成的集合,某些“顶点”被“边”或者“弧”连接。G(graph,图) = <V(vertex, 顶点), E(edge, 边)>
实例:无向图(undirected),有向图(directed),无环图(acyclic),完全图(complete),稠密图(dense)/稀疏图(sparse),加权图(weighted)
表示方法:邻接矩阵,邻接链表
七、树tree
定义:无回路的图,无环图。自由树(free tree),连通无回路。森林(forest),未完全连通且无回路,简单理解为多个树。
实例:有根树(root),状态空间树(state-space),有序树(ordered),二叉树(binary),二叉查找树(binary search tree)
八、集合set
定义:互不相同的项的无序组合(可以为空)
九、字典dict
定义:能实现查找给定元素、增加新元素和删除一个元素的集合
十、抽象数据类型abstract
定义:由表示数据的抽象对象集合和针对该抽象对象所做的操作组成,在面向对象编程中即为类(class)=属性(attribute)+方法(method)