一丶数据结构概述
1.数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的关系和运算等的学科。
2.基本数据结构,从逻辑上可分为线性结构和非线性结构,大体上可分成表结构、树结构、图结构 和散结构4大类
表结构用于表示结点的先后次序关系,通常一个结点只有1个前驱和后继;
树结构用来表示结点之间的层次关系,通常一个结点可以有多个后继,1个前驱。
一个数据节点的集合以及集合中各结点之间的关系组成一个数据结构
3.数据的物理结构(存储结构)要体现出逻辑结构
物理结构指的是数据结构的存储表示
4.算法复杂性记号T(n)、TW(n)和TE(n)分别代表:一般情况、最坏情况和平均情况
5.算法的有效性指的是:时间复杂性和空间复杂性;
算法指的是解决问题的有限运算序列
算法的五个特性:输入、输出、可行性、确定性、有穷性
6.算法分析的目的是分析算法的效率以求改进,两个主要方面是空间和时间复杂度
评价标准是算法的正确性和有效性
7.算法的描述包括自然语言、流程图和伪代码
二丶表、散结构和指针
1.顺序查找长度为n的线性表的平均查找长度为(n+1)/2
2.对于顺序存储的长度为n的线性表,在第i个位置插入一个元素,则需要依次移动从下标 n-1 到 i 的元素,共移动了 n-i 个元素;而删除第 i 个元素需要依次移动从下标 i+1 到 n-1 的元素,共移动 n-i-1 个元素。其中,0≤i<n。
3.
这个图有一点点错误,把7换成6,下面跟着变一下不影响答案
4.线性表是一个有限序列,可以为空。对线性表进行二分查找是必须采用顺序存储且结点有序排列
5.不带监督元:h==NULL 带监督元:h->next==NULL;
简单循环链表为空:h==NULL 带监督元循环链表为空:h->next==h
6.平均情况下,查找速度最快而且能插入删除的数据结构式散列表
7.
8.
这是对上述第二道题的具体解释
第三张图片中,指针必须有具体的指向对象才能使用*
答案为4 3 3
9.指针相加无实际意义
10.二维数组的本质是(*p)[N]
11.在单向链表中,删除 p 所指结点的后继结点的链操作为 p->next=p->next->next;
12.(注意看是否为加头链表)
13.就单一的删除指定元素来说,链式好于顺序存储
就单一的存取任意第i个结点来说,顺序好于链式
14.
平均情况也为O(n)
15.建立单向链表时间复杂度为O(n),建立有序的需要O(n**2)
16.
17.
18.稀疏矩阵
稀疏矩阵是指绝大多数元素值为0,使用三元组保存。转置算法使用分段定位法,pot[j]表示是转之后的矩阵第j行非0元素在转置后数组的起始存储位置,也就是前面有多少个非0元素。
19.KMP 字符串 失配值
只需要注意每一位看的是本位之前的
三丶树和二叉树
1.结点的度:区别于离散数学,一个结点的度等于该结点的子树的个数
2.树的遍历
左侧就是先序,正下方为中序,右侧为后序遍历
3.树的构造
4.检索树
5.平衡树(AVL)
6.树转森林,森林转树
四丶图
1.最小生成树
(1)克鲁斯卡尔算法
不断找不构成回路的最短边
(2)prim算法
以生长点的形式找相连的最短边和点
2.最短路径
(1)DJ斯特拉算法
以prim算法为基础
(2)弗洛伊德算法
每一对顶点之间的最短路径
3.拓扑排序
依次去掉入度为0的结点
五丶排序
1.直接插入排序
2.希尔排序
3.冒泡排序及改进的冒泡排序
4.快速排序
5.简单选择排序
6.堆排序
7.归并排序
递归 非递归
8.基数排序