优秀JSON方法博客参考:https://blog.csdn.net/qq_27674439/article/details/90717791
数据结构的逻辑结构
- 线性
- 非线性
- 集合:同属于一个集合是数据元素之间的唯一关系
- 线性结构:一对一关系,仅有一个直接前驱和一个直接后继
- 树形结构:一对多关系,除了根节点以外仅有唯一的直接前驱
- 图形结构:多对多关系,多个直接前驱与直接后继
存储结构
- 顺序结构(一维数组)
- 链式结构(链表)
- 索引结构(索引表)
- 散列hash存储(构造散列函数)
算法和效率
- 算法:有穷性、确定性、可行性、输入输出
- 目标:正确性、可读性、健壮高效低存储量
- 效率:事先估算法和事后统计法
- 评价(数量级):时间复杂度和空间复杂度
线性表:
- 线性表--基本操作:创建、求长度、查找、插入、删除、显示
- 顺序存储--
顺序表:元素的物理顺序与逻辑顺序一致。
- 特点:按照数据元素的序号
随机存取 - 节约存储空间
- 缺点:插入和删除操作耗时。预先分配最大空间,存储空间浪费,表的容量难以扩充
链式存储
线性链表:
- 单向链表:一个数据域与一个指针域
- 循环链表:一个数据域和两个指针域
- 双向链表:最后一个节点的指针指向头结点
栈 (后进先出-相当于出口只有一个)
运算:进栈、出栈、判栈空、判栈满、读取栈顶元素、显示栈元素
- 顺序栈(顺序存储)
- 链栈(链式存储)
队列(先进先出--类似于管道,双开口的)
运算:入队,出队,读队头,显示队列元素、判队空、判队满、求队列长度
顺序队列:假溢出
循环队列:解决假溢出c出管理、对CPU的分配管理、优先队列-权值优先、双端队列)
串
- 顺序存储
- 链接存储
- 堆分存储
树和二叉树
结点、结点的度、数的度、叶子、分支结点、有序树、无序树 表示法:嵌套集合法、圆括号表示法、凹入法
二叉树(一种特殊的有序树)
- 性质一:一颗非空的二叉树的第i层上最多有2^(i-1)个结点
- 性质二:深度为h的二叉树中,最多具有2^(h-1)个结点