王道数据结构复习笔记

一、数据结构和算法

数据结构

概念:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

三要素:

  1. 逻辑结构

    概念:指数据元素之间的逻辑关系

    分类:

    • 线性结构:线性表(栈、队列、串、数组…)。
    • 非线性结构:集合、树形结构、图状结构。
  2. 存储结构(物理结构)

    概念:指数据结构在计算机中的表示。

    分类:顺序存储链式存储索引存储散列存储

  3. 数据运算

    概念:包括运算的定义和实现。

算法

概念:对特定问题求解步骤的一种描述。

重要特性:有穷性、确定性、可行性、输入、输出。

优秀标准:正确性、可读性、健壮性、效率、低存储量需求。

复杂度:

  1. 时间复杂度

    概念:算法中所有语句的执行次数之和。

    分类:最好时间复杂度、平均时间复杂度、最坏时间复杂度。

    常见时间复杂度: O ( 1 ) < O ( l o g 2 n ) < O ( n ) < O ( n l o g 2 n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) {\color{Purple}O\left ( 1\right )}<{\color{Green}O\left ( log_{2}n\right )}<{\color{Orange}O\left ( n\right )}<{\color{Magenta}O\left ( nlog_{2}n\right )}<{\color{DarkOrange}O\left ( n^{2}\right )}<{\color{DarkBlue}O\left ( n^{3}\right )}<{\color{blue}O\left ( 2^{n}\right )}<{{\color{Cyan}O\left ( n!\right )}}<{\color{black}O\left ( n^{n}\right )} O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

  2. 空间复杂度

    概念:算法所耗费的存储空间

    注:当算法所需的辅助空间为常量时,空间复杂度为 O ( 1 ) {\color{Purple}O\left ( 1\right )} O(1)

  3. 计算规则

    • 加法规则: O ( f ( n ) ) + O ( g ( n ) ) = O ( m a x ( f ( n ) , g ( n ) ) ) O\left ( {\color{Green}f\left ( n\right )}\right )+O\left ( {\color{Blue}g\left ( n\right )}\right )=O\left ( max\left ( {\color{Green}f\left ( n\right )},{\color{Blue}g\left ( n\right )}\right )\right ) O(f(n))+O(g(n))=O(max(f(n),g(n)))
    • 乘法规则: O ( f ( n ) ) ∗ O ( g ( n ) ) = O ( f ( n ) ∗ g ( n ) ) O\left ( {\color{Green}f\left ( n\right )}\right )*O\left ( {\color{Blue}g\left ( n\right )}\right )=O\left ( {\color{Green}f\left ( n\right )}*{\color{Blue}g\left ( n\right )}\right ) O(f(n))O(g(n))=O(f(n)g(n))

二、线性表

定义

概念:线性表是具有相同数据类型的n个数据元素的有限序列。

特点:

  • 表中元素个数有限
  • 表中元素具有逻辑上的顺序性,有先后次序
  • 每个元素数据类型相同,占用相同大小的存储空间

注:线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是存储结构

基本操作

函数 描述
InitList(&L) 初始化表,构造一个空的线性表
Length(L) 求表长,返回线性表L中数据元素的个数
LocateElem(L,e) 按值查找
GetElem(L,i) 按位查找,获取表L中第i个位置的元素
ListInsert(&L,i,e) 在表L的第i个位置插入元素e
ListDelete(&L,i,&e) 删除表中第i个位置的元素,并用e返回删除元素的值
PrintList(L) 遍历输出线性表L
Empty(L) 若L为空表返回true,否则返回false
DestroyList(&L) 销毁线性表并释放占用的内存空间

注:考试尽量使用这些函数名称,方便老师阅卷

你可能感兴趣的:(考研,数据结构,数据结构,算法)