读《数据结构与算法》 的一些笔记

1.数据结构分类

一组数据元素以及其相互关系的数据结构同样有两种不同的表现形式,
一种是逻辑结构一种叫存储结构

逻辑结构 分为集合 线性结构 树形结构 图形结构 线性结构包括线性表 队列 栈, 树形结构 图形结构为 为非线性结构

2.数据逻辑结构表示方式

在这里插入图片描述

3.数据结构 表示方式:二元组 和图形 例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2-1 到2-4 对应的图形:
在这里插入图片描述

3.抽象数据类型

在这里插入图片描述
在这里插入图片描述

4.算法时间复杂度分析

1.计算循环次数
例子1:
在这里插入图片描述
例子2 :在这里插入图片描述
在这里插入图片描述
例子3
在这里插入图片描述

二 分析最高频度的基本操作

有些算法直接计算循环次数并不好计算 所以可以分析最高频度

例子:在这里插入图片描述

线性表

线性表的 存储方式
在这里插入图片描述

单链表 java 中没有指针 指针操作用的是对象实现的
在这里插入图片描述

单链表的结构
在这里插入图片描述
单链表的特性
在这里插入图片描述

双向链表

双向链表的结构 在这里插入图片描述
双向链表插入操作
在这里插入图片描述

线性表和链表 基于空间的比较
在这里插入图片描述

迭代器

在这里插入图片描述

栈(堆栈)

先进后出
堆栈也分别顺序存储和链式存储 顺序存储比较简单 用的就是数组实现的 外加一个top指针 来指示栈顶的位置;
在这里插入图片描述

链式存储示意图

在这里插入图片描述

队列

先进先出
顺序存储中 圆环队列
在这里插入图片描述

队列判断是空队列和满队列的方法

在这里插入图片描
在这里插入图片描述

队列的链式存储

在这里插入图片描述

堆栈的应用

1.进制转换
在这里插入图片描述
在这里插入图片描述

递归和堆栈 的联系

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二叉树的一些性质
最多的条件就是满二叉树
加粗样式

在这里插入图片描述在这里插入图片描述
满二叉树 每层结点都是满的
完全二叉树 是在满二叉树的基础下 去掉最下层相邻的若干个叶子结点。

完全二叉树的性质
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191203204519641.png![在这里插入图片描述](https://img-blog.csdnimg.cn/20191203204724745.png
性质6.7 画个二叉树的图一下子就能够理解了。

二叉树的存储结构
分为 顺序存储结构 和链式存储结构

顺序存储结构

对于满二叉树或者完全二叉树 可以直接用一个数组去存储他们 。
结点为i的话 他们的左孩子没2i 右孩子为2i+1 父节点为i/2
在这里插入图片描述

但是对于其他二叉树的话 用顺序存储则不方便 需要构造成完全二叉树 或者满二叉树 在进行存储 这样的话造成内存浪费 并且一些极端单支二叉树存k个结点需要 2的k次方-1个存储单元如下图
在这里插入图片描述

二叉树的链式存储
在这里插入图片描述

二叉链表和三叉链表的区别就是: 三叉链表有多一个结点指向父节点 这样更容易父节点 但是也会浪费存储空间
三叉链表的话更容易找到父节点 二叉链表找到父节点的话只能从开始遍历。

二叉树遍历 先序 中序 和后序 如果遍历明白 但是具体敲代码还是不会
读完后要自己写一遍~!。

发布了78 篇原创文章 · 获赞 5 · 访问量 7362

猜你喜欢

转载自blog.csdn.net/weixin_41930050/article/details/103210878