第四章 集合、链表、二叉树
3.1.1 类集设置的目的
集合 数据的容器,存储数据使用的。
对象数组: 数组中的元素个数是固定的,不能动态扩充大小,所以最早的时候可以通过链表实现一个动态对象数组。
数据结构的知识点
数据结构: 相互之间存在一种或多种特点关系的数据元素的集合。
数据结构ADT 逻辑结构、存储结构、数据的运算
接触过的数据结构
线性结构:数组、栈、队列
非线性结构:树、图、集合
二叉树
二叉树:每个结点至多只有两颗子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒
链表
链表[Linked list]:链表是由一组不必相连的内存结构(节点),按照 特定 的顺序链接在一起的抽象数据类型。
补充:
抽象数据类型(Abstract Data Type[ADT]):表示数学中抽象出来的一些操作的集合。 内存结构:内存中的结构,如:strut、特殊内存块。。。等等之类。
数组和链表的区别和优缺点:
数组是一种连续存储线性结构,元素类型相同,大小相等。
数组的优点:
存取速度快
数组的缺点:
事先必须知道数组的长度
插入删除元素很慢 O(n) (而链表 插入平均时间复杂度 O(1))
空间通常是有限制的
需要大块连续的内存块
插入删除元素的效率很低
链表是离散存储线性结构
n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点,每个节点只有一个后续节点,首节点没有前驱节点,尾节点没有后续节点。
链表的优点:
空间没有限制
插入删除元素很快
链表的缺点:
存取速度很慢
2.链表共分几类
链表常用的有3类:单链表、双向链表、循环链表。
关于树我单独再写一篇进行详细介绍