知识点总结

一、数据结构

数据结构的定义

1.数据是描述客观事物的数和字符的集合
2. 数据元素是数据的基本单位
3.数据项是具有独特含义的数据最小单位,也成为字段或域
4.数据对象是指性质相同的数据元素的集合,它是数据的一个子集
5.数据结构是指所有数据元素以及数据元素之间的关系,可以看作是相互之间存在着某种特定关系的数据元素的集合,即带结构的数据元素的集合
6.类型:
(1)数据的逻辑结构:由数据元素之间的关系构成
(2)数据的存储结构:数据元素及其关系在计算机存储器中的存储表示,也成为数据的物理结构
7.数据的运算:施加在该数据上的操作

逻辑结构

1.表示:图形表示、二元组
2.类型:集合、线性结构(一对一)、树形结构(一对多)、图形结构(多对多)

存储结构

1.顺式存储结构:将数据的逻辑结构直接映射到存储结构
2.链式存储结构:所有的节点地址不一定是连续的;通过指针域将所有节点链接起来
3.索引存储结构
4.哈希(散列)存储结构

数据运算

对于一种数据结构,其逻辑结构总是唯一的,但它可能对应多种存储结构,并且在不同的存储结构中同一运算的实现过程可能不同

数据类型与抽象数据类型

1.数据类型是一组性质相同的值的集合和定义在此集合上的一组操作的总称,是某种程序设计语言中已经实现的数据结构
常用的数据类型:int型、bool型、float型、double型、char型
2.存储空间的分配
(1)静态存储空间的分配
(2)动态存储空间的分配
3.抽象数据类型
抽象数据类型=逻辑结构+抽象运算
4.抽象数据类型一般可以由数据对象、数据关系及基本操作来定义。
ADT 抽象数据类型名
{
数据对象(数据对象的定义)
数据关系(数据关系的定义)
基本操作(基本操作的定义)
}
其中,数据对象和数据关系的定义用集合描述,基本操作的定义格式为
返回类型 基本操作名(参数表)

算法及其描述

1.算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令
2.特性: 有穷性 、确定性 、可行性、有输入、有输出
3.算法设计的目标:正确性、可使用性、可读性、健壮性、高效率与低存储需求
4.伪代码不是真正的程序设计语言
5.在C++语言中提供了一种引用运算符“&”

算法分析

1.算法时间性能分析方法:事后统计发、事前估算法
2.时间复杂度分析
也称渐进时间复杂度,实际上是一种时间增长趋势分析(重要)
3.算法空间性能分析 S(n)=O(g(n))

二.线性表

定义

线性表是具有相同特性的数据元素的一个有限序列

顺序表

1.销毁线性表后,只剩一个头结点,且他的指针域为空

链表

1.线性表中的每个元素最多只有一个前驱元素和一个后继元素。
2.若一个结点中的某个指针域不需要指向其他任何结点,则将它的值置为空,用常量NULL表示
3.无论单链表是否为空都有一个头结点

线性表的应用

计算矩阵,混合使用了顺序存储结构和链式存储结构

有序表

两个长度分别为m,n的有序表A和B采用二路归并算法,最好情况下元素的比较次数为MIN(m,n),最坏m+m-1

三.栈和队列

1.栈是一种只能在一端进行插入或删除操作的线性表
2.栈是一种线性结构,是一种特殊的线性表
3.当栈中没有数据元素时称为空栈
4.栈的主要特点是后进先出,也成为后进先出表(LIFO)
5.采用顺序存储结构的栈称为顺序栈
(1)栈空的条件:s->top == -1
(2)栈满的条件:s->top == MaxSize-1
(3)进栈、出栈、取栈顶元素前先判断栈是否为空
6.链栈
(1)在栈顶操作,头操法
(2)进栈、出栈、取栈顶元素前先判断栈是否为空
7.栈的应用
(1)前缀表达式,中缀表达式和后缀表达式之间的转换
(2)迷宫问题

队列

1.仅允许在表的一端进行插入操作,而在表的另一端进行删除操作
2.先进先出表(FIFO)
3.顺序队
(1)队空的条件:q->front == q->rear
(2)队满的条件:q->rear == MaxSize-1
(3)进队列、出队列前先判断队列是否为空
(4)设计一个标志以区分队空、队满
或少用一个元素空间(队空:q.rear = q.front;队满:(q.rear+1)%m=q.front)
4.链队
(1)队空的条件:q->rear==NULL(或q->front ==NULL)
(2)队满的条件:不考虑
(3)进队列、出队列前先判断队列是否为空
5.队列的应用
迷宫问题
6.双端队列是指两端都可以进行进队和出队操作的队列

四.串

串的基本概念

1.字符串简称串,串是由字符元素构成的,其中元素的逻辑关系也是一种线性关系
2.串是一种特殊的线性表,它是由零个或多个字符组成的有限序列
3.串中所含字符的个数称为该串的长度(或串长)
4.两个串相等当且仅当这两个串的长度相等并且对应位置上的字符都相等
5.一个串中任意个连续字符组成的序列称为该串的子串

顺序串

1.顺序串中的字符被依次存放在一组连续的存储单元里
2.有非紧缩格式和紧缩格式

链串

1.链串中的一个结点可以存储多个字符
2.在为占用的数据域里补上不属于字符集的特殊符号

串的模式匹配

1.Brute-Force算法 平均时间复杂度O(m*n)
2.KMP算法
3.求模式串的next数组

posted @ 2020-03-28 21:58  zhuzii  阅读(175)  评论(0编辑  收藏  举报