1.数据结构分类
一组数据元素以及其相互关系的数据结构同样有两种不同的表现形式,
一种是逻辑结构一种叫存储结构
逻辑结构 分为集合 线性结构 树形结构 图形结构 线性结构包括线性表 队列 栈, 树形结构 图形结构为 为非线性结构
2.数据逻辑结构表示方式
3.数据结构 表示方式:二元组 和图形 例子
2-1 到2-4 对应的图形:
3.抽象数据类型
4.算法时间复杂度分析
1.计算循环次数
例子1:
例子2 :
例子3
二 分析最高频度的基本操作
有些算法直接计算循环次数并不好计算 所以可以分析最高频度
例子:
线性表
线性表的 存储方式
单链表 java 中没有指针 指针操作用的是对象实现的
单链表的结构
单链表的特性
双向链表
双向链表的结构
双向链表插入操作
线性表和链表 基于空间的比较
迭代器
栈(堆栈)
先进后出
堆栈也分别顺序存储和链式存储 顺序存储比较简单 用的就是数组实现的 外加一个top指针 来指示栈顶的位置;
链式存储示意图
队列
先进先出
顺序存储中 圆环队列
队列判断是空队列和满队列的方法
队列的链式存储
堆栈的应用
1.进制转换
递归和堆栈 的联系
树
二叉树的一些性质
最多的条件就是满二叉树
满二叉树 每层结点都是满的
完全二叉树 是在满二叉树的基础下 去掉最下层相邻的若干个叶子结点。
完全二叉树的性质
性质6.7 画个二叉树的图一下子就能够理解了。
二叉树的存储结构
分为 顺序存储结构 和链式存储结构
顺序存储结构
对于满二叉树或者完全二叉树 可以直接用一个数组去存储他们 。
结点为i的话 他们的左孩子没2i 右孩子为2i+1 父节点为i/2
但是对于其他二叉树的话 用顺序存储则不方便 需要构造成完全二叉树 或者满二叉树 在进行存储 这样的话造成内存浪费 并且一些极端单支二叉树存k个结点需要 2的k次方-1个存储单元如下图
二叉树的链式存储
二叉链表和三叉链表的区别就是: 三叉链表有多一个结点指向父节点 这样更容易父节点 但是也会浪费存储空间
三叉链表的话更容易找到父节点 二叉链表找到父节点的话只能从开始遍历。
二叉树遍历 先序 中序 和后序 如果遍历明白 但是具体敲代码还是不会
读完后要自己写一遍~!。