大话数据结构精要提取

来源:互联网 发布:鬼笔鹅膏 知乎 编辑:程序博客网 时间:2024/05/01 20:17

一、.数据结构分为数据结构和物理结构

1.1 逻辑结构:是指数据对象中数据元素之间的相互关系

逻辑结构包括:集合结构、线性结构、树形结构、图形结构

1.2 物理结构:是指数据逻辑结构在计算机中的存储形式

物理结构包括:顺序存储结构、链式存储结构

1.2.1 顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是是一致的。

1.2.2 链式存储结构:是把数据存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

二、数据结构和算法的关系以及算法的相关结构

2.1 数据结构是思想上的抽象,而算法是数据结构的实现,算法可以让程序变得更快速、优雅。更可以把数据结构的思想真正的变成程序

2.2 算法的特性:输入输出、有穷性、确定性、可行性。

2.3 算法设计的要求:正确性、可读、健壮、时间效率高、存储量低

2.4 算法效率的度量单位:事后统计法、事前分析估算法

2.5 算法时间复杂度

2.5.1 推导大O阶方法

用常数1取代运行时间中的所有加法常数

在修改运行次数的函数中,只保留最高项

最高项去除相乘的常数

2.6 算法的空间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现

三、线性表

3.1 线性表定义:零个或多个数据元素的有限序列

3.2 线性表的顺序存储结构

3.2.1 顺序存储结构是指:用一段地址连续的存储单元依次存储线性表中的数据元素

3.2.2 顺序存储结构的插入和删除

获取元素:根据数组下标时间复杂度为o(1)

插入元素:表长度加一,从要插入元素的位置之后的元素向后移动一位  时间复杂度为o(n)

删除元素:删除元素,所有后面的元素向前移一位,表长减一

优点     :无需为表示表中元素之间的逻辑关系而增加额外的存储空间 可以快速获取表中任意位置的元素

缺点 :插入删除需要移动大量元素线性表变化较大时,难以确定线性表的容量造成存储空间的“碎片”

3.3 线性表的链式存储结构

3.3.1 前一个结点的指针域指向后一个结点的地址


3.3.2 单链表的获取

获取元素:从头开始遍历整个线性表,直到找到元素未知

插入元素:将要插入位置的前一个结点指针域指向要插入的元素,将要插入元素的指针域指向后一个结点的物理地址

删除元素:将前一节点的指针域指向后继节点的指针域

3.3.3 单链表的整表创建

3.3.4 单链表的整表删除

3.4 单链表与顺序存储结构的优缺点


3.5  静态链表    用数组的方式描述链表,已解决高级语言没有C语言的指针的概念

3.6 循环链表   头尾相连

3.7 双向链表   在原有的后继指针的基础上添加前驱指针,指向前一个结点

4. 栈和队列

4.1

4.1.1 栈的定义 栈是限定在表尾进行插入和删除操作的线性表 LIFO

4.1.2 栈的顺序存储结构栈底作为数组的0索引

4.1.3 栈的链式存储结构

4.1.4 栈的应用

4.1.4.1 递归 把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数

4.1.4.2 四则运算表达式求值算数优先级等的计算~~

4.2 队列

4.2.1 队列的定义只允许在一端进行插入操作,而在另一端进行删除操作的线性表 FIFO

4.2.2 队列的顺序存储结构循环队列,队列尾部满了,从头部重新进行添加,只需要标识哪个是头

4.2.3 队列的链式存储结构同线性表的插入删除

5

5.1 匹配模式算法

5.1.1 朴素的匹配模式算法

算法详情请点击---------------------------

5.1.2 KMP模式匹配算法

算法详情请点击---------------------------

6

6.1 树的定义 n个节点的有限集

6.2 二叉树的定义 n个节点的有限集,由一个根节点和两棵互不相交的,分别被称为根节点的左子树和右子树的二叉树组成

6.3 二叉树的存储结构

6.3.1 顺序存储结构按照层级来存


6.3.2 链式存储结构


6.4 遍历二叉树

6.4.1 前序遍历


6.4.2 中序遍历


6.4.3 后序遍历



6.4.4 层序遍历



6.5 树、森林与二叉树的转换

6.5.1 树转换成二叉树

6.5.1.1 加线 所有兄弟结点之间加一条线

6.5.1.2 去线 对树中每个结点只保留第一个孩子结点的连线

6.5.1.3 层次调整 以树的根结点为轴心,顺时针旋转到一定的角度,使之层次分明


6.5.2 森林转换成二叉树

6.5.2.1 把每个树转换成二叉树

6.5.2.2 第一颗二叉树不动,从第二棵二叉树开始,依次把后一颗二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连起来


6.5.3 二叉树转换为树




















0 0
原创粉丝点击