zoukankan      html  css  js  c++  java
  • [考研笔记] 991数据结构C语言最终总结

    前言

    今天是2021年12月20日,距离考研还有5天。根据之前做的教材习题、历年真题以及去年的全真模拟,最后再进行一次综合性总结;

    大部分内容提炼至 [考研笔记] 数据结构1.1 C 语言基础1.2 C 语言进阶1.4.3 指针与引用

    文章基本是给自己看的,结构就会比较杂乱了。

    目录

    1 数据结构真题分析

    2 数据结构知识点

    3 数据结构算法设计

    4 C 语言真题分析

    5 C 语言知识点

    6 C 语言程序设计

    7 关于 2021 991 真题

    [考研笔记] 991 数据结构 C 语言最终总结

    1 数据结构真题分析

    2 数据结构基础知识

    2.1 基本概念类

      2.1.1 数据结构基础

        逻辑结构:是数据元素之间所存在的逻辑关系;

        物理结构:是数据结构在计算机中的存储方式(映像);

        两者关系:逻辑结构独立于存储结构;物理结构是逻辑结构的映像;

      2.1.2 线性表系列

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

        顺序表:是线性表的顺序存储结构,用一组地址连续的存储单元存储数据;

        链表:是线性表的链式存储结构,用一组任意的存储单元存储数据;

        :是一种运算受限的线性表,只允许在一端进行插入或删除操作;

        队列:是一种运算受限的线性表,只允许在一端插入、另一端删除;

      2.1.3 树系列

        二叉树:是度不大于 2 的有序树,即每个结点至多 2 棵子树,且有左右之分;

        线索二叉树:在二叉树的基础上在叶子结点的空指针加上结点前驱或后继,以便于遍历二叉树;

        二叉排序树:是满足任意结点的左子树所有结点权值小于该结点、右子树大于该结点的二叉树;

        哈夫曼树:树中所有叶子结点带权路径长度之和最小的树;

      2.1.4 图系列

        完全图:是任意两点之间都存在边(或两条方向相反的弧)的图;

        子图:边集与点集均为另一个图的子集的图(不强调是图则不一定是子图);

        (强)连通分量:即极大(强)连通子图,对于(强)连通图来说即其自身;

        最小生成树:包含全部顶点的极小连通子图;

        AOV 网:建立在 DAG 上的用点表示活动、用弧表示活动优先级的网;

        AOE 网:建立在 DAG 上的用点表示事件、用弧表示活动的网;

        关键路径:具有最大路径长度(路径各个活动所需时间之和)的路径;

      2.1.5 查找

        顺序文件:物理结构与逻辑结构记录排列先后次序一致的文件;

        索引查找:利用索引表进行的查找方法,索引记录了关键字值与记录的存储位置之间的对应关系;

        散列查找:通过对元素的关键字值进行散列函数运算,直接求出元素的地址,而不需反复比较的查找方法;

    2.2 性质类

      顺序表是一种随机存取的结构,存储密度大;

      最适合做队列的链表结构是单向循环链表

      更适合做队列的链表结构是带头指针、尾指针的单向非循环链表

      循环队列不会出现假溢出情况;

      二叉排序树中序遍历严格单调递增;

      散列查找效率取决于:散列函数的定义、冲突的处理方法、装填因子大小(记录数 / 表长)

      m 阶 B- 树(多路平衡查找树)是一棵 m 叉树,结点最多有 m 个子结点,最多有 m - 1 个关键字;根结点最少有 2 个,其他非叶子结点最少有 m / 2 个;

      B+ 树有 n 个关键字的结点有 n 个子结点,叶子结点数 = 记录数,有两个入口;

    2.3 方法论

      2.3.1 求关键路径

        拓扑序求出各事件最早发生时间 ve(最长路径长度);

        逆拓扑序求出各事件最晚发生时间 vl

        各活动最早发生时间 e 等于起点事件的最早发生时间;

        各活动最晚发生时间 l 等于终点事件的最晚发生时间减去活动时间 w;

        所有 e = l 的活动为关键活动,构成关键路径。

      2.3.2 判断是否为折半判定树

        将有序序列按中序遍历填入判定树中,观察取整方式是否一致;

      2.3.3 B- 树的插入与删除

        插入:从最底层(不包括外部结点)插入,如果导致溢出,即关键字个数超过 m - 1,则取最中间关键字上移至父结点,划分出的两部分分别放在原结点和新结点,并保持 B- 树的性质,依次递归直到不出现溢出或者到根结点为止;

        删除:如果被删关键字所在结点为叶子结点,且关键字个数 < m / 2,则将个数 >= m / 2 的兄弟结点邻近关键字上移至父结点,父结点同侧关键字下放替补被删关键字,这样结点个数是不变的;如果不存在这样的兄弟结点,则只有下放操作,这样就会删除一个结点。

      2.3.4 堆积的插入与删除

        插入:插入结点到最后位置,开始向上调整:如果结点大于父结点,则交换,以此类推直到满足堆积性质;

        删除:删除根结点后将最后一个结点与根结点交换,开始向下调整:每次选择子结点的较大值进行交换,以此类推直到满足堆积性质;

      堆积序列??

    2.4 比较类

      2.4.1 顺序存储与链式存储

        

      2.4.2 顺序存储与一维数组

        相同点:使用连续地址存储,支持随机存取;

        不同点:数组只能存取元素;线性表长度可变;

      2.4.3 排序方法

        平均时间复杂度:插入 = 冒泡 = 选择(O(n ^ 2))> 堆积 = 归并 = 快速(O(n log n))

        空间复杂度:归并(O(n))> 快速(O(n log n))> 其他(O(1)) 

        稳定性:插入、冒泡、归并稳定;希尔、快速、选择、堆积不稳定;

    2.5 分类及其他

      物理结构分类:顺序存储、链式存储、索引存储、散列存储;

      数据结构三要素:逻辑结构、存储结构、算法(定义+实现);

      算法五大特性:有穷性、确定性、有效性、输入、输出;

      好的算法的目标:正确性、可读性、健壮性、效率、低存储量需求;

      卡特兰数:C(n, 2n) / (n + 1);

      散列函数构造:直接定址法、除留余数法(素数)等;

      冲突处理方法:开放定址法(线性探测再散列(造成聚集)、二次、伪随机)、再散列、链地址;

    3 数据结构算法设计

    3.1 后序遍历非递归算法

    4 C 语言真题分析

    5 C 语言知识点

    5.1 常考运算符优先级

      高优先级:()、->、前自增自减;!、寻址、取址、后自增自减;

      中优先级:乘除;加减;左移右移;比较运算符;

      低优先级:与;异或;或;逻辑和;逻辑或;

      最低优先级:逗号。

    5.2 文件函数

      5.2.1 指针放前面

        fscanf/fprintf(fp, "...", ...); 格式化读写文件;

        fseek(fp, offset, SEEK_SET/CUR/END(0/1/2)); 改变文件位置标记;

      5.2.2 指针放后面

        fgetc(fp); fputc(ch, fp); 读写字符;

        fgets(str, n, fp); fputs(str, fp); 读写字符串;

        fread/fwrite(buffer, size, count, fp); 二进制读写文件;

      5.2.3 其他

        rewind(); 使文件位置标记指向开头;

        ftell(); 返回当前文件位置标记的位置;

        feof(fp); 判定文件是否结束;

    5.3 指针

      指针数组/函数本质是数组/函数,声明时不用括号,比如 int *p[2], int *q(int);

      数组/函数指针本质是指针,声明时需要括号,比如 int (*p)[2], int (*q)(int)。

    5.4 其他

      共用体:所有数据成员共用一片内存地址;每次只有一个成员起作用;定义时不能初始化;

      全局变量和局部变量:局部变量是指在某个语句块(类、函数等)中内部定义的变量和函数参数,只能在块中使用;全局变量有效范围从文件中定义位置开始到文件结束;

      函数数据传递:参数传递;全局变量;函数返回值;

      主函数参数:argc 用来统计命令行参数个数,argv 用来存放参数字符串;

      预处理指令:是在真正编译开始之前由编译器调用的独立程序指令;

      头文件:调用库功能;加强类型安全检查;<> 适用于工程或标准头文件;"" 适用于自定义头文件;

      宏定义:用于定义一个标识符常量或带参的宏,本质上是一种文本替换;

      字符数组不能被直接赋值,必须使用 strcmp

    6 C 语言程序设计

    6.1 文件模板

    6.2 交换函数的位运算模板

    void swap(int &a, int &b) { 
        a ^= b ^= a ^= b; 

    7 关于 2021 991 真题

    很大区别于往年(2020年真题未知),无论是数据结构还是 C 语言,综合题中都出现大量需要写代码的题,并且出题不像往年那么死板;

    数据结构的简答题连考了 4 道概念题(逻辑物理结构、哈夫曼树、散列查找、快速排序),不知道是否为一种趋势;

    选择题、设计题没有太大变化。

  • 相关阅读:
    CSS 内外边距
    CSS 边框
    android chrome this account already exists on your device
    linux s s r client ubuntu kali
    rEFInd 美化 windows
    sogou opensuse
    Ping 虚拟机 超时
    python3 批量自动下载对应用户 github上的项目 或者 starts 的项目
    materialize 样例
    opensuse input methods
  • 原文地址:https://www.cnblogs.com/jinkun113/p/15712292.html
Copyright © 2011-2022 走看看