数据结构 kmp字符串匹配_谈谈考研中数据结构的学习(二)

2021年考研大纲暂时还未公布,但是据往年的经验来看,计算机统考变化应该不太大,这里结合了往年统考大纲的数据结构部分以及历年真题,还结合其他学校自主命题部分对数据结构大纲做出一些分析,希望对大家提前了解大纲有所帮助。就总体而言,因为统考科目较多,所以数据结构考察范围较小一些,而单独命题的有可能范围更大一些,就出题难度而言,统考试题数据结构的题目的创新性和灵活性比较大,对我们广大非统考考生仍有极大参考价值。

数据结构学习大纲解析

  1. 掌握数据结构的基本概念、基本原理和基本方法。
  2. 掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。
  3. 能够运用数据结构基本原理和方法进行问题的分析与求解,具备采用C或C++语言设计与实现算法的能力。
强调使用C/C++编程能力,很多考生编程能力比较弱,缺乏基本的编程思想和编程能力,建议把基本功底打牢固,磨刀不误砍柴工。
C语言重点:迭代、函数与递归、指针、结构体、字符串相关操作、动态内存分配、链表、冒泡排序。
建议熟悉C语言编程,了解C++相关基础知识。
注意算法题只能用C/C++语言实现。

〇. 绪论

(一)数据结构相关的概念和术语 (二)数据结构的三要素:逻辑结构、物理结构和数据运算 (三)算法时间复杂度和空间复杂度的分析与计算

本章内容是数据结构概述,虽然并不在考研大纲中,但是却是数据结构的重点。
考生可以通过对本章的学习,初步了解数据结构的基本内容和基本方法。
分析算法的 时间复杂度空间复杂度是本章的重点,一定要熟练掌握,算法设计题通常都会要求分析时间、空间复杂度,同时会出现考查时间复杂度的选择题。

一、线性表

  (一) 线性表的定义和基本操作

  (二) 线性表的实现

  1.顺序存储

  2.链式存储

  3.线性表的应用

线性表是考研命题的重点。
线性表这一章里面的知识点不多,但要做到深刻理解,同时能够应用相关知识点解决实际问题,这类算法题实现起来相对比较容易而且代码量较少,但却要求具有最优的性能(时间、空间复杂度),才能获得高分。
因此,应牢固掌握各种线性表(顺序表、单向链表、双向链表、循环链表)的各种基本操作(初始化、插入、删除、遍历、查找、插入排序、合并),在平时的学习中多注重培养动手编程能力。
链表上插入、删除节点时的指针操作是选择题的一个常考点,诸如双向链表等一些相对复杂的链表上的操作也是可以出现在综合应用题当中的。
同时,线性表也是实现复杂数据结构的基础,有可能在后面二叉树、图等相关考题中需要使用相关的知识点。

二、栈、队列和数组

  (一)栈和队列的基本概念

  (二)栈和队列的顺序存储结构

  (三)栈和队列的链式存储结构

  (四)栈和队列的应用

  (五)特殊矩阵的压缩存储

(六)广义表的定义及存储结构

栈、队列和数组可以考查的知识点相比链表来说要多一些。
首先,是栈与队列FILO和FIFO的特点。比如针对栈FILO的特点,进栈出栈序列的问题常出现在选择题中。
其次,是栈和队列的顺序和链式存储结构,这里一个常考点是不同存储结构下栈顶指针、队首指针以及队尾指针的操作,特别是循环队列判满和判空的2种判断方法,偶尔也会出现双端队列的考题。
再次,是特殊矩阵的压缩存储,这个考点复习的重点可以放在二维矩阵与一维数组相互转换时,下标的计算方法,比如与对角线平行的若干行上数据非零的矩阵存放在一维数组后,各个数据点相应的下标的计算。
这一章可能的大题点,在于利用堆栈或队列的特性,将它们作为基础的数据结构,支持实际问题求解算法的设计,例如用栈解决递归问题,用队列解决图的遍历问题等等。
数组和特殊矩阵的压缩存储都是考生必须掌握的内容。
广义表的定义和存储结构的考题最近几年也经常出现。

三、串

(一) 串的定义和实现

(二)串的模式匹配

  1. 暴力匹配法
  2. KMP算法
  3. KMP算法的改进
字符串简称串,是计算机中处理非数值运算的对象大都是字符串数据。我们在本章中需要了解串的基本概念、常见操作、字符串的模式匹配、重点掌握KMP匹配算法,要熟练掌握手工求next数组,了解nextval数组的求解方法。

四、树与二叉树

  (一) 树的基本概念

  (二) 二叉树

  1.二叉树的定义及其主要特征

  2.二叉树的顺序存储结构和链式存储结构

  3.二叉树的遍历

  4.线索二叉树的基本概念和构造

  (三) 树、森林

  1.树的存储结构

  2.森林与二叉树的转换

  3.树和森林的遍历

  (四) 树与二叉树的应用

  1.二叉排序树

  2.平衡二叉树

  3.哈夫曼(Huffman)树和哈夫曼编码

本章内容多以选择题的形式考查,但也会出涉及树遍历相关的算法题。
树和二叉树的性质、遍历操作、转换、存储结构和操作特性等,满二叉树、完全二叉树、线索二叉树、哈夫曼树的定义和性质,二叉排序树和二叉平衡树的性质和操作等,都是选择题必然会涉及的内容。
满二叉树、完全二叉树节点数的计算,由树、二叉树的示意图给出相应的遍历序列
依据二叉树的遍历序列还原二叉树。
线索化的实质,计算采用不同的方法线索化后二叉树剩余空指针域的个数,
平衡二叉树的定义、性质、建立和四种调整算法以及回溯法相关的问题。
常见的综合应用题考点包括:
二叉树的遍历算法,遍历基础上针对二叉树的一些统计和操作(比如结点数统计、左右子树对换等等)
判断某棵二叉树是否二叉排序树,
以上这些都要求能用递归的和非递归的算法解决,特别要重视非递归的算法,线索化后二叉树的遍历算法,如查找某结点线索化后的前驱或后继结点的算法以及给出Huffman编码等等。

五、图

  (一)图的基本概念

  (二)图的存储及基本操作

  1.邻接矩阵法

  2.邻接表法

  3.邻接多重表、十字链表

  (三)图的遍历

  1.深度优先搜索

  2.广度优先搜索

  (四)图的基本应用

  1.最小(代价)生成树

  2.最短路径

  3.拓扑排序

  4.关键路径

图算法的难度较大,因此主要掌握 深度优先搜索广度优先搜索,其他内容以算法题形式出现的概率不高。
应掌握图的基本概念及基本性质、图的存储结构(邻接矩阵、邻接表、邻接多重表和十字链表)及其特性、存储结构之间的转化、基于存储结构上的遍历操作和各种应用(拓扑排序、最小生成树、最短路径和关键路径)等。
图的相关算法较多、易混,但通常只要求掌握其基本思想和实现步骤(能动手模拟),而算法的具体实现则不是重点。
在这一章中需要识记的是图以及基于图的各种定义,存储方式。
要熟练掌握图的深度遍历和广度遍历算法,这是用图来解决应用问题时常用的算法基础。
需要掌握基于图的多个算法,能够以手工计算的方式在一个给定的图上执行特定的算法求解问题。常见的应用问题直接给出或经过抽象,会成为下列问题:
最小生成树求解(Prim算法和Kruskal算法,两种方法思想都很简单,但要注意不要混淆这两种方法),
拓扑排序问题(这里会用到静态链表,可以注意一下)
关键路径问题(数据结构的较大难点,要把概念理解透,能做出表格找出关键路径),
最短路径问题(Dijkstra算法和Floyd算法。有重要的应用背景,也是贪心法不多的能给出最优解的典型问题之一。

六、查找

  (一)查找的基本概念

  (二)顺序查找法

  (三)分块查找法

  (四)折半查找法

  (五)B_树及其基本操作、B+树的基本概念

  (六)散列(Hash)表

  (七)字符串模式匹配

  (八)查找算法的分析及应用

本章是考研命题的重点。
需要识记关键字、主关键字、次关键字的含义;
静态查找与动态查找的含义及区别;
平均查找长度ASL的概念及在各种查找算法中的计算方法和计算结果,特别是一些典型结构的ASL值,
B树和B+树是本章的难点。对于B树,考研大纲要求掌握插入、删除和查找的操作过程;对于B+树,仅要求了解其基本概念和性质。
B树的概念和基本操作冲突解决方法的选择和冲突处理过程的描述,B+树的概念(新增考点),特别要注意B_树和B+树概念的对比,
KMP算法需要理解基本原理,经常以计算题的形式出现。
以及Hash表相关的概念。
对于散列查找,应掌握散列表的构造、冲突处理方法(各种方法的处理过程)、查找成功和查找失败的平均查找长度、散列查找的特征和性能分析。对于折半查找,应掌握折半查找的过程、构造判定树、分析平均查找长度等。
要熟练掌握顺序表、链表、二叉树上的查找方法,特别要注意顺序查找、二分查找的适用条件(比如链表上用二分查找就不合适)和算法复杂度。

七、排序

  (一)排序的基本概念

  (二)插入排序

  1.直接插入排序

  2.折半插入排序

  (三)起泡排序(Bubble Sort)

  (四)简单选择排序

  (五)希尔排序(Shell Sort)

  (六)快速排序

  (七)堆排序

  (八)二路归并排序(Merge Sort)

  (九)基数排序

  (十)外部排序

  (十一)各种排序算法的比较

  (十二)排序算法的应用

内部排序。内部排序既是重点,又是难点。排序算法众多,光大纲上列出的就有9种,各种不同算法还有相应的一些概念定义需要记住。
堆排序、快速排序和归并排序是本章的重难点。
应深入掌握各种排序算法的思想、排序过程(能动手模拟)和特征(初态的影响、复杂度、稳定性、适用性等),通常以选择题的形式考查不同算法之间的对比。
此外,对于一些常用排序算法的关键代码,要达到熟练编写的程度:看到某特定序列,读者应具有选择最优排序算法(根据排序算法特征)的能力。
外部排序最近往往也被某些学校加入考试范围,需要了解。
选择题常见的问题包括:不同排序算法的复杂度,给定数列要求给出某种特定排序方法运行一轮后的排序结果,或者给出初始数列和一轮排序结果要求选择采用的排序算法,给定时间、空间复杂度要求以及数列特征要求选择合适的排序算法等等。如果排序这一考点出现在综合应用题中则常与数组结合来考查。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值