考研《数据结构》复习知识点归纳

合集下载

数据结构考研笔记整理(全)

数据结构考研笔记整理(全)

数据结构考研笔记整理(全)数据结构考研笔记整理数据结构是计算机科学中非常重要的一门课程,对于计算机专业的学生来说,考研复习过程中对数据结构的准备非常关键。

因此,我们需要系统地整理数据结构的相关知识点,以便更好地理解和掌握。

一、线性表线性表是数据结构中最基本的一种数据结构,它是一种有序的数据元素的集合。

常见的线性表有顺序表和链表。

1. 顺序表顺序表是将数据元素存放在一块连续的存储空间中,通过元素的下标来访问。

具有随机访问的特点,但插入和删除操作比较麻烦。

适用于查找操作频繁的场景。

2. 链表链表是将数据元素存放在任意的存储空间中,通过指针来连接各个元素。

具有插入和删除操作方便的特点,但不支持随机访问。

适用于插入和删除操作频繁的场景。

二、栈和队列栈和队列是特殊的线性表,它们都具有先进先出的特点。

1. 栈栈是一种特殊的线性表,只能在表的一端进行插入和删除操作,即“先进后出”。

常见的应用有函数调用的过程中的参数传递、表达式求值等。

2. 队列队列也是一种特殊的线性表,只能在表的一端进行插入操作,而在另一端进行删除操作,即“先进先出”。

常见的应用有任务调度、缓冲区管理等。

三、树树是一种非常重要的非线性数据结构,它由节点和边组成。

树具有层次结构,常见的树结构有二叉树、二叉搜索树和平衡二叉树等。

1. 二叉树二叉树是每个节点最多有两个子树的树结构,包括左子树和右子树。

二叉树的遍历方式有前序遍历、中序遍历和后序遍历。

2. 二叉搜索树二叉搜索树是一种特殊的二叉树,它的左子树中的所有节点都小于根节点,右子树中的所有节点都大于根节点。

具有快速查找和插入的特点。

3. 平衡二叉树平衡二叉树是一种特殊的二叉搜索树,它的左右子树的高度差不超过1。

通过旋转操作可以保持树的平衡性。

四、图图是一种非常复杂的非线性数据结构,它由顶点和边组成。

图可以分为有向图和无向图,常见的图算法有深度优先搜索和广度优先搜索。

1. 深度优先搜索深度优先搜索是一种用于遍历或搜索图和树的算法,它从一个节点开始,尽可能深地访问每个节点的所有子节点,直到没有子节点为止。

数据结构考研复习重点归纳

数据结构考研复习重点归纳

数据结构考研复习重点归纳数据结构是计算机科学中非常重要的一门基础课程,考研复习数据结构时,需要重点掌握的内容有以下几个方面。

1.线性表:线性表是数据结构中最基本的一种结构,常见的线性表有数组、链表和栈等。

考生需要掌握线性表的定义、插入、删除、查找等基本操作,并能够分析它们的时间复杂度。

2.树:树是一种非常重要且常见的数据结构,它具有分层结构和层次关系。

其中,二叉树是最简单也是最基本的一种树结构,树的遍历(如前序遍历、中序遍历和后序遍历)是树算法中的重要内容。

此外,还要了解一些特殊的树结构,如平衡树和B树等。

3.图:图是由节点和边组成的一种数据结构,它是一种非常灵活的结构,常用来表示各种实际问题中的关系。

在考研复习中,需要掌握图的基本概念(如顶点和边)、图的存储结构(如邻接矩阵和邻接表)以及图的遍历算法(如深度优先和广度优先)等。

4.查找和排序:在实际问题中,经常需要查找和排序数据。

查找算法(如顺序查找、二分查找和哈希查找)和排序算法(如冒泡排序、插入排序和快速排序)是数据结构中常见的算法,考生需要熟练掌握这些算法的原理和实现方法。

此外,还要了解一些高级的查找和排序算法,如二叉查找树和归并排序等。

5.散列表:散列表(也称哈希表)是一种特殊的数据结构,它利用散列函数将数据映射到一个固定大小的数组中。

散列表具有快速的查找和插入操作,常用于实现字典和数据库等应用。

在考研复习中,需要了解散列表的原理和实现方法,以及处理冲突的方法,如链地址法和开放地址法。

6.动态规划:动态规划是一种解决问题的数学方法,也是一种重要的算法思想。

在考研复习中,需要掌握动态规划的基本原理和解题思路,以及常见的动态规划算法,如背包问题和最长公共子序列等。

7.算法复杂度分析:在考研复习中,需要有一定的算法分析能力,能够对算法的时间复杂度和空间复杂度进行分析和估算。

此外,还要能够比较不同算法的效率,并选择合适的算法来解决实际问题。

除了以上重点内容,考生还要注意掌握一些基本的编程知识,如指针、递归和动态内存分配等。

湖北省考研数据结构重点知识点梳理

湖北省考研数据结构重点知识点梳理

湖北省考研数据结构重点知识点梳理数据结构是计算机科学中一门基础性的课程,对于科研考试来说,尤为重要。

为了帮助考生更好地复习数据结构,本文将对湖北省考研数据结构的重点知识点进行梳理,以便考生有针对性地进行复习。

一、线性表及其应用1. 顺序表顺序表是一种最基本的线性表,可以使用数组实现。

其特点是元素之间的逻辑关系与物理相邻,查询效率高。

重点内容包括顺序表的定义、插入、删除、查找等操作,以及相关应用,如多项式的加法、乘法等。

2. 链表链表是另一种常见的线性表,可以通过指针实现元素之间的关联。

链表特点是插入和删除操作方便,但查找效率较低。

重点内容包括单链表、双链表的定义和实现,以及常见的链表操作。

3. 栈与队列栈和队列是两种特殊的线性表,分别具有先进后出(LIFO)和先进先出(FIFO)的特点。

重点内容包括栈和队列的定义、实现和应用,以及相关算法,如递归、括号匹配等。

二、树与二叉树4. 树树是一种非线性的数据结构,由若干个结点构成,并且每个结点可以有多个子结点。

重点内容包括树的基本概念,如树的度、层次、深度等,以及树的表示方法和遍历算法。

5. 二叉树二叉树是一种特殊的树结构,每个结点最多有两个子结点。

重点内容包括二叉树的定义、性质,如满二叉树、完全二叉树等,以及二叉树的遍历算法,如前序、中序、后序遍历等。

6. 二叉搜索树二叉搜索树是一种特殊的二叉树,对于任意结点,其左子树的所有关键字小于该结点,右子树的所有关键字大于该结点。

重点内容包括二叉搜索树的定义、插入、删除操作,以及搜索树的应用。

三、图与排序算法7. 图图是一种由顶点和边组成的数据结构,用于描述对象之间的关系。

重点内容包括图的基本概念,如顶点数、边数、路径等,以及图的表示方法和遍历算法,如深度优先搜索(DFS)、广度优先搜索(BFS)等。

8. 排序算法排序算法是数据结构中的重要内容,常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。

数据结构考研知识点总结

数据结构考研知识点总结

数据结构考研知识点总结数据结构是计算机科学中一门重要的课程,其是计算机科学的核心基础之一、在考研中,数据结构也是一个必考的科目,对于应试者来说,掌握数据结构的知识点是非常重要的。

下面是对数据结构考研知识点的总结。

1.数据结构的基本概念和分类。

数据结构是指一组数据的存储方式和相应的操作方法。

常见的数据结构包括线性结构、树形结构、图结构等。

线性结构包括数组、链表、栈、队列等;树形结构包括二叉树、堆、哈希树等;图结构包括有向图、无向图等。

2.线性结构。

线性结构是数据元素之间存在一对一的关系的数据结构。

常用的线性结构有数组、链表、栈和队列。

-数组是一种连续存储的线性结构,可以通过下标直接访问元素。

-链表是一种离散存储的线性结构,有单向链表、双向链表和循环链表等。

-栈是一种特殊的线性结构,只能在一端进行插入和删除操作,遵循后进先出(LIFO)的原则。

-队列也是一种特殊的线性结构,只能在一端进行插入操作,另一端进行删除操作,遵循先进先出(FIFO)的原则。

3.树形结构。

树形结构是一种非线性的数据结构,具有层次关系的集合。

常用的树形结构包括二叉树、AVL树、B树和哈夫曼树等。

-二叉树是一种每个节点最多有两个子节点的树形结构,包括满二叉树、完全二叉树和二叉树等。

-AVL树是一种自平衡的二叉树,通过维护平衡因子来保证树的平衡。

-B树是一种多路平衡查找树,用于大规模数据存储和文件系统等。

-哈夫曼树是一种用于数据压缩的最优二叉树。

4.图结构。

图结构是由顶点和边组成的一种数据结构。

常用的图结构包括有向图、无向图、带权图和图的遍历等。

-有向图是边有方向的图结构,边具有指向关系。

-无向图是边无方向的图结构,边没有指向关系。

-带权图是边具有权值的图结构。

-图的遍历有深度优先(DFS)和广度优先(BFS)两种常见方法。

5.排序算法。

排序算法是数据结构中重要的应用之一、常见的排序算法包括冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序等。

数据结构必考知识点总结

数据结构必考知识点总结

数据结构必考知识点总结在准备考试时,了解数据结构的基本概念和相关算法是非常重要的。

以下是一些数据结构的必考知识点总结:1. 基本概念数据结构的基本概念是非常重要的,包括数据、数据元素、数据项、数据对象、数据类型、抽象数据类型等的概念。

了解这些概念有助于更好地理解数据结构的本质和作用。

2. 线性表线性表是数据结构中最基本的一种,它包括顺序表和链表两种实现方式。

顺序表是将数据元素存放在一块连续的存储空间内,而链表是将数据元素存放在若干个节点中,每个节点包含数据和指向下一个节点的指针。

了解线性表的概念和基本操作是非常重要的。

3. 栈和队列栈和队列是两种特殊的线性表,它们分别具有后进先出和先进先出的特性。

栈和队列的实现方式有多种,包括数组和链表。

掌握栈和队列的基本操作和应用是数据结构的基本内容之一。

4. 树结构树是一种非线性的数据结构,它包括二叉树、多路树、二叉搜索树等多种形式。

了解树的基本定义和遍历算法是必考的知识点。

5. 图结构图是一种非线性的数据结构,它包括有向图和无向图两种形式。

了解图的基本概念和相关算法是非常重要的,包括图的存储方式、遍历算法、最短路径算法等。

6. 排序算法排序是一个非常重要的算法问题,掌握各种排序算法的原理和实现方式是必不可少的。

常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。

7. 查找算法查找是另一个重要的算法问题,包括顺序查找、二分查找、哈希查找、树查找等。

了解各种查找算法的原理和实现方式是必考的知识点之一。

8. 算法复杂度分析算法的时间复杂度和空间复杂度是评价算法性能的重要指标,掌握复杂度分析的方法和技巧是非常重要的。

9. 抽象数据类型ADT是数据结构的一种概念模型,它包括数据的定义和基本操作的描述。

了解ADT的概念和实现方式是非常重要的。

10. 动态存储管理动态存储管理是数据结构中一个重要的问题,包括内存分配、内存释放、内存回收等。

了解动态存储管理的基本原理和实现方式是必考的知识点之一。

数据结构考研笔记整理(全)

数据结构考研笔记整理(全)

数据结构考研笔记整理(全)一、第二章线性表●考纲内容●一、线性表的基本概念●线性表是具有相同数据结构类型的n个数据元素的有限序列;线性表为逻辑结构,实现线性表的存储结构为顺序表或者链表●二、线性表的实现●1、顺序表●定义(静态分配)●#define MaxSize 50 \\ typedef struct{ \\ ElemType data[MaxSize];\\ intlength;\\ }SqList;●定义(动态分配)●#define MaxSize 50\\ typedef strcut{\\ EleType *data; //指示动态非配数组的指针\\ int MaxSize,length;\\ }SqList;●c的动态分配语句为L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);●c++动态分配语句为L.data=new ElemType[InitSize];●插入操作●删除操作●按值寻找●2、链表●单链表●单链表的定义●●头插法建立单链表●●尾插法建立单链表●●按序号查找getElem(LinkList L,int i)和按值查找locateElem(LinkListL,ElemType e)●插入结点(后插)●p=getElem(L,i-1); //查找插入位置的前驱结点\\ s.next=p.next;\\p.next=s;●将前插操作转化为后插操作,即先将s插入的p的后面然后调换s和p的数据域●s.next=p.next;\\ p.next=s.next;\\ temp=p.data;\\ p.data=s.data;\\s.data=temp;●删除结点●p.getElem(L,i-1);\\ q=p.next;\\ p.next=q.next;\\ free(q);●双链表(结点中有prior指针和next指针)●循环链表●静态链表●借助数组来描述线性表的链式存储结构,结点中的指针域next为下一个元素的数组下标●三、线性表的应用●使用的时候如何选择链表还是顺序表?●表长难以估计,经常需要增加、删除操作——链表;表长可以估计,查询比较多——顺序表●链表的头插法,尾插法,逆置法,归并法,双指针法;顺序表结合排序算法和查找算法的应用●小知识点(选择题)二、第三章栈,队列和数组●考纲内容●一、栈和队列的基本概念●栈:后进先出,LIFO,逻辑结构上是一种操作受限的线性表●队列:先进先出,FIFO,逻辑结构上也是一种操作受限的线性表●二、栈和队列的顺序存储结构●栈的顺序存储●●队列的顺序存储●进队:队不满时,送值到队尾元素,再将队尾指针加一●出队:队不空时,取队头元素值,再将队头指针加一●判断队空:Q.front==Q.rear==0;●循环队列(牺牲一个单元来区分队空和队满,尾指针指向队尾元素的后一个位置,也就是即将要插入的位置)●初始:Q.front==Q.rear●队满:(Q.rear+1)%MaxSize=Q.front●出队,队首指针进1:Q.front=(Q.front+1)%MaxSize●入队,队尾指针进1:Q.rear=(Q.rear+1)%MaxSize●队列长度:(Q.rear+MaxSize-Q.front)%MaxSize●三、栈和队列的链式存储结构●栈的链式存储●●队列的链式存储●实际是上一个同时带有头指针和尾指针的单链表,尾指针指向单链表的最后一个结点,与顺序存储不同,通常带有头结点●四、多维数组的存储●行优先:00,01,02,10,11,12●列优先:00,10,01,11,02,12●五、特殊矩阵的压缩存储●对称矩阵●三角矩阵●三对角矩阵(带状矩阵)●稀疏矩阵●将非零元素及其相应的行和列构成一个三元组存储●十字链表法●六、栈、队列、数组的应用●栈在括号匹配中的应用●栈在递归中的应用●函数在递归调用过程中的特点:最后被调用的函数最先执行结束●队列在层次遍历中的应用●二叉树的层次遍历●1跟结点入队●2若队空,则结束遍历,否则重复3操作●3队列中的第一个结点出队并访问,若有左孩子,则左孩子入队;若有右孩子,则右孩子入队●重点为栈的(出入栈过程、出栈序列的合法性)和队列的操作及其特征●小知识点(选择题)●n个不同元素进栈,出栈元素不同排列的个数为{2n\choose n }/(n+1)●共享栈是指让两个顺序栈共享一个存储空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸,可以更有效的利用存储空间,同时对存储效率没有什么影响●双端队列是指允许两端都可以进行入队和出队操作的队列●输出受限的双端队列:允许两端插入,只允许一端删除●输入受限的双端队列:允许两端删除,只允许一端插入三、第四章串●考纲内容●字符串模式匹配●暴力算法●注意指针回退时的操作是i=i-j+2;j=j+1;●kmp算法●手工求next数组时,next[j]=s的最长相等前后缀长度+1,其中s为1到j-1个字符组成的串●在实际kmp算法中,为了使公式更简洁、计算简单,如果串的位序是从1开始的,则next数组需要整体加一;如果串的位序是从0开始的,则next数组不需要加一●根据next数组求解nextval数组:如果p[j]==p[next[j]],则nextval[j]=nextval[next[j]],否则nextval[j]=next[j];●小知识点●串和线性表的区别:1线性表的数据元素可以不同,但串的数据元素一般是字符;2串的操作对象通常是子串而不是某一个字符四、第五章树与二叉树●考纲内容●一、树的基本概念●定义●树是一种递归的数据结构,是一种逻辑结构●树的性质●结点数为n,则边的数量为n-1●树中的结点数等于所有结点的度数之和加1(一个结点的孩子个数称为该结点的度,树中结点的最大度数称为树的度,每一条边表示一个结点,对应一个度,只有根结点上面无边,故结点树=度数之和+1)●度为m的树中第i层至多有m^{i-1}个结点(i\geq1)(m叉树的第i层最多有m^{i-1}个结点)●高度为h的m叉树至多有(m^h-1)/(m-1)个结点(假设每一个结点都有m个孩子,则由等比数列的求和公式可以推导出该式子)●具有n个结点的m叉树的最小高度是\lceil log_m(n(m-1)+1)\rceil(由高度为h的m叉树的最大结点树公式有,n满足式子(m^{h-1}-1)/(m-1) \leq n\leq (m^h-1)/(m-1))●高度为h的m叉树至少有h个结点;高为h,度为m的树至少有h+m-1个结点(m叉树并不等于度为m的树,m叉树可以为空树,要求所有结点的度小于等于m,而度为m的树一定有一个结点的度数为m)●二、二叉树●二叉树的定义及其主要特征●定义●特点●每个结点至多只有两颗子树●二叉树是有序树,其子树有左右之分,次序不能颠倒,否则将成为另一颗二叉树,即使树中结点只有一颗子树,也要区分他是左子树还是右子树●特殊的二叉树●满二叉树:高度为h,结点数为2^h-1,所有叶子结点都集中在二叉树的最下面一层,除叶子结点外的所有结点度数都为2,从根结点为1开始编号,对于编号为i的结点,其父结点为\lfloor i/2 \rfloor,左孩子(若有)编号为2i,右孩子(若有)编号为2i+1,所以编号为偶数的结点只可能是左孩子,编号为奇数的结点只可能是右孩子●完全二叉树:删除了满二叉树中编号更大的结点,高为h,结点数为n的完全二叉树的每个结点的编号都与高度为h的满二叉树中编号为1到n的结点相同。

数据结构考研知识点总结

数据结构考研知识点总结

数据结构考研真题及知识点解析考察目标1. 理解数据结构的基本概念、基本原理和基本方法。

2. 掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。

3. 能够运用数据结构的基本原理和方法进行问题的分析与求解,具备采用C、C++或Java语言设计与实现算法的能力。

第2章线性表一、考研知识点(一)线性表的定义和基本操作(二)线性表的实现1.顺序存储2.链式存储3.线性表的应用二、考研真题(一)选择题近两年第2章没有考选择题,因为此章主要是线性表的操作,而且又是这门课的一个基础,考综合题的可能性比较大,而且可以和第3章、第9章和第10章的内容结合来出题。

1.(11年)设n是描述问题规模的非负整数,下面程序片段的时间复杂度是()。

x=2;while(x<n/2) x=2*x;A.O(logn)B.O(n)C.O(nlogn)D.O(n2)分析:答案是A,此题考查的是算法时间复杂度的计算。

可以放在第二章,实际这内容贯穿每一章内容中算法的度量。

(二)综合题1.(09年)已知一个带有表头结点的单链表结点结构为(data,link),假设该链表只给出了头指针list。

在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。

若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。

要求:(1)描述算法的基本设计思想;(2)描述算法的详细实现步骤;(3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C或C++或JAVA语言实现),关键之处给出简要注释。

分析:此题考查线性表的链式存储,主要是线性表的基本操作的应用。

做此题时要把握算法的效率。

(1)算法基本思想如下:从头到尾遍历单链表,并用指针p指向当前结点的前k个结点。

当遍历到链表的最后一个结点时,指针p所指向的结点即为所查找的结点。

(2)详细实现步骤:增加两个指针变量和一个整型变量,从链表头向后遍历,其中指针p1指向当前遍历的结点,指针p指向p1所指向结点的前k个结点,如果p1之前没有k 个结点,那么p指向表头结点。

考研数据结构常见知识点总结与复习方法

考研数据结构常见知识点总结与复习方法

考研数据结构常见知识点总结与复习方法数据结构是计算机科学中的重要基础课程,也是考研的必考科目之一。

掌握好数据结构的知识点,不仅对于考研复习有帮助,也对于日后从事相关领域的工作有着重要意义。

本文将对考研数据结构常见的知识点进行总结,并分享一些复习方法,希望对考研学子有所帮助。

一、数据结构的基本概念数据结构是指数据元素及其之间的关系的集合,它是计算机存储、组织数据的方式。

在考研中,常见的数据结构包括线性表、树、图等。

线性表包括顺序表和链表,顺序表是一种连续存储的线性表,链表是一种离散存储的线性表。

树分为二叉树、平衡二叉树、树的遍历等。

图是由顶点集合和边集合组成的一种数据结构。

二、常见的数据结构算法1. 线性表的算法:包括插入、删除、查找等操作,如顺序表的插入和删除、链表的插入和删除。

2. 树的算法:如创建一个二叉树、二叉树的遍历(前序、中序、后序)等。

3. 图的算法:图的遍历、最短路径算法、最小生成树算法等。

三、复习方法1. 理清知识框架:首先要理清数据结构的知识框架,明确各个部分的概念和关系。

可以通过查阅教材、课堂笔记等资料,梳理出一个清晰的知识结构框架。

2. 看懂教材:仔细阅读教材,将重点、难点的内容标注出来,并理解其原理和实现方式。

可以做一些笔记、总结,帮助记忆和理解。

3. 做题巩固:在复习的过程中,要注重做题巩固。

可以从历年考研真题、习题集等找到一些与知识点相关的题目,多做一些练习,把知识点运用到实际中。

做题能够帮助巩固理论知识,提高解题能力。

4. 制定学习计划:根据自己的实际情况,合理安排学习时间和任务,制定一个科学合理的学习计划。

划分好每天、每周的学习内容,按部就班地进行学习,保持持续性和系统性。

四、总结与展望数据结构是考研中的一门重要课程,对于计算机专业的学生来说尤为重要。

通过对数据结构常见知识点的总结和复习方法的分享,希望能够帮助考研学子更好地掌握数据结构这门课程。

在备考过程中,持之以恒,通过理论学习和实践练习相结合,相信大家一定能够取得优异的成绩,实现自己的考研梦想。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》复习重点知识点归纳一.数据结构的章节结构及重点构成数据结构学科的章节划分基本上为:概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文件,动态存储分配。

对于绝大多数的学校而言,“外排,文件,动态存储分配”三章基本上是不考的,在大多数高校的计算机本科教学过程中,这三章也是基本上不作讲授的。

所以,大家在这三章上可以不必花费过多的精力,只要知道基本的概念即可。

但是,对于报考名校特别是该校又有在试卷中对这三章进行过考核的历史,那么这部分朋友就要留意这三章了。

按照以上我们给出的章节以及对后三章的介绍,数据结构的章节比重大致为:·概论:内容很少,概念简单,分数大多只有几分,有的学校甚至不考。

·线性表:基础章节,必考内容之一。

考题多数为基本概念题,名校考题中,鲜有大型算法设计题,如果有,也是与其它章节内容相结合。

·栈和队列:基础章节,容易出基本概念题,必考内容之一。

而栈常与其它章节配合考查,也常与递归等概念相联系进行考查。

·串:基础章节,概念较为简单。

专门针对于此章的大型算法设计题很少,较常见的是根据KMP进行算法分析。

·多维数组及广义表:基础章节,基于数组的算法题也是常见的,分数比例波动较大,是出题的“可选单元”或“侯补单元”。

一般如果要出题,多数不会作为大题出。

数组常与“查找,排序”等章节结合来作为大题考查。

·树和二叉树:重点难点章节,各校必考章节。

各校在此章出题的不同之处在于,是否在本章中出一到两道大的算法设计题。

通过对多所学校的试卷分析,绝大多数学校在本章都曾有过出大型算法设计题的历史。

·图:重点难点章节,名校尤爱考。

如果作为重点来考,则多出现于分析与设计题型当中,可与树一章共同构成算法设计大题的题型设计。

·查找:重点难点章节,概念较多,联系较为紧密,容易混淆。

出题时可以作为分析型题目给出,在基本概念型题目中也较为常见。

算法设计型题中可以数组结合来考查,也可以与树一章结合来考查。

·排序:与查找一章类似,本章同属于重点难点章节,且概念更多,联系更为紧密,概念之间更容易混淆。

在基本概念的考查中,尤爱考各种排序算法的优劣比较此类的题。

算法设计大题中,如果作为出题,那么常与数组结合来考查。

二.数据结构各章节重点勾划第0章概述本章主要起到总领作用,为读者进行数据结构的学习进行了一些先期铺垫。

大家主要注意以下几点:数据结构的基本概念,时间和空间复杂度的概念及度量方法,算法设计时的注意事项。

本章考点不多,只要稍加注意理解即可。

第1章线性表作为线性结构的开篇章节,线性表一章在线性结构的学习乃至整个数据结构学科的学习中,其作用都是不可低估的。

在这一章,第一次系统性地引入链式存储的概念,链式存储概念将是整个数据结构学科的重中之重,无论哪一章都涉及到了这个概念。

总体来说,线性表一章可供考查的重要考点有以下几个方面:1.线性表的相关基本概念,如:前驱、后继、表长、空表、首元结点,头结点,头指针等概念。

2.线性表的结构特点,主要是指:除第一及最后一个元素外,每个结点都只有一个前趋和只有一个后继。

3.线性表的顺序存储方式及其在具体语言环境下的两种不同实现:表空间的静态分配和动态分配。

静态链表与顺序表的相似及不同之处。

4.线性表的链式存储方式及以下几种常用链表的特点和运算:单链表、循环链表,双向链表,双向循环链表。

其中,单链表的归并算法、循环链表的归并算法、双向链表及双向循环链表的插入和删除算法等都是较为常见的考查方式。

此外,近年来在不少学校中还多次出现要求用递归算法实现单链表输出(可能是顺序也可能是倒序)的问题。

在链表的小题型中,经常考到一些诸如:判表空的题。

在不同的链表中,其判表空的方式是不一样的,请大家注意。

5.线性表的顺序存储及链式存储情况下,其不同的优缺点比较,即其各自适用的场合。

单链表中设置头指针、循环链表中设置尾指针而不设置头指针以及索引存储结构的各自好处。

第2章栈与队列栈与队列,是很多学习DS的同学遇到第一只拦路虎,很多人从这一章开始坐晕车,一直晕到现在。

所以,理解栈与队列,是走向DS高手的一条必由之路,。

学习此章前,你可以问一下自己是不是已经知道了以下几点:1.栈、队列的定义及其相关数据结构的概念,包括:顺序栈,链栈,共享栈,循环队列,链队等。

栈与队列存取数据(请注意包括:存和取两部分)的特点。

2.递归算法。

栈与递归的关系,以及借助栈将递归转向于非递归的经典算法:n!阶乘问题,fib数列问题,hanoi问题,背包问题,二叉树的递归和非递归遍历问题,图的深度遍历与栈的关系等。

其中,涉及到树与图的问题,多半会在树与图的相关章节中进行考查。

3.栈的应用:数值表达式的求解,括号的配对等的原理,只作原理性了解,具体要求考查此为题目的算法设计题不多。

4.循环队列中判队空、队满条件,循环队列中入队与出队算法。

如果你已经对上面的几点了如指掌,栈与队列一章可以不看书了。

注意,我说的是可以不看书,并不是可以不做题哦。

第3章串经历了栈一章的痛苦煎熬后,终于迎来了串一章的柳暗花明。

串,在概念上是比较少的一个章节,也是最容易自学的章节之一,但正如每个过来人所了解的,KMP算法是这一章的重要关隘,突破此关隘后,走过去又是一马平川的大好DS山河。

串这一章需要攻破的主要堡垒有:1.串的基本概念,串与线性表的关系(串是其元素均为字符型数据的特殊线性表),空串与空格串的区别,串相等的条件2.串的基本操作,以及这些基本函数的使用,包括:取子串,串连接,串替换,求串长等等。

运用串的基本操作去完成特定的算法是很多学校在基本操作上的考查重点。

3.顺序串与链串及块链串的区别和联系,实现方式。

4.KMP算法思想。

KMP中next数组以及nextval数组的求法。

明确传统模式匹配算法的不足,明确next数组需要改进之外。

其中,理解算法是核心,会求数组是得分点。

不用我多说,这一节内容是本章的重中之重。

可能进行的考查方式是:求next和nextval数组值,根据求得的next或nextval数组值给出运用KMP算法进行匹配的匹配过程。

第4章数组与广义表学过程序语言的朋友,数组的概念我们已经不是第一次见到了,应该已经“一回生,二回熟”了,所以,在概念上,不会存在太大障碍。

但作为考研课程来说,本章的考查重点可能与大学里的程序语言所关注的不太一样,下面会作介绍。

广义表的概念,是数据结构里第一次出现的。

它是线性表或表元素的有限序列,构成该结构的每个子表或元素也是线性结构的,所以,这一章也归入线性结构中。

本章的考查重点有:1.多维数组中某数组元素的position求解。

一般是给出数组元素的首元素地址和每个元素占用的地址空间并组给出多维数组的维数,然后要求你求出该数组中的某个元素所在的位置。

2.明确按行存储和按列存储的区别和联系,并能够按照这两种不同的存储方式求解1中类型的题。

3.将特殊矩阵中的元素按相应的换算方式存入数组中。

这些矩阵包括:对称矩阵,三角矩阵,具有某种特点的稀疏矩阵等。

熟悉稀疏矩阵的三种不同存储方式:三元组,带辅助行向量的二元组,十字链表存储。

掌握将稀疏矩阵的三元组或二元组向十字链表进行转换的算法。

4.广义表的概念,特别应该明确表头与表尾的定义。

这一点,是理解整个广义表一节算法的基础。

近来,在一些学校中,出现了这样一种题目类型:给出对某个广义表L若干个求了若干次的取头和取尾操作后的串值,要求求出原广义表L。

大家要留意。

5.与广义表有关的递归算法。

由于广义表的定义就是递归的,所以,与广义表有关的算法也常是递归形式的。

比如:求表深度,复制广义表等。

这种题目,可以根据不同角度广义表的表现形式运用两种不同的方式解答:一是把一个广义表看作是表头和表尾两部分,分别对表头和表尾进行操作;二是把一个广义表看作是若干个子表,分别对每个子表进行操作。

第5章树与二叉树从对线性结构的研究过度到对树形结构的研究,是数据结构课程学习的一次跃变,此次跃变完成的好坏,将直接关系到你到实际的考试中是否可以拿到高分,而这所有的一切,将最终影响你的专业课总分。

所以,树这一章的重要性,已经不说自明了。

总体来说,树一章的知识点包括:二叉树的概念、性质和存储结构,二叉树遍历的三种算法(递归与非递归),在三种基本遍历算法的基础上实现二叉树的其它算法,线索二叉树的概念和线索化算法以及线索化后的查找算法,最优二叉树的概念、构成和应用,树的概念和存储形式,树与森林的遍历算法及其与二叉树遍历算法的联系,树与森林和二叉树的转换。

下面我们来看考试中对以上知识的主要考查方法:1.二叉树的概念、性质和存储结构考查方法可有:直接考查二叉树的定义,让你说明二叉树与普通双分支树的区别;考查满二叉树和完全二叉树的性质,普通二叉树的五个性质:第i层的最多结点数,深度为k 的二叉树的最多结点数,n0=n2+1的性质,n个结点的完全二叉树的深度,顺序存储二叉树时孩子结点与父结点之间的换算关系(左为:2*i,右为:2*i+1)。

二叉树的顺序存储和二叉链表存储的各自优缺点及适用场合,二叉树的三叉链表表示方法。

2.二叉树的三种遍历算法这一知识点掌握的好坏,将直接关系到树一章的算法能否理解,进而关系到树一章的算法设计题能否顺利完成。

二叉树的遍历算法有三种:先序,中序和后序。

其划分的依据是视其每个算法中对根结点数据的访问顺序而定。

不仅要熟练掌握三种遍历的递归算法,理解其执行的实际步骤,并且应该熟练掌握三种遍历的非递归算法。

由于二叉树一章的很多算法,可以直接根据三种递归算法改造而来(比如:求叶子个数),所以,掌握了三种遍历的非递归算法后,对付诸如:“利用非递归算法求二叉树叶子个数”这样的题目就下笔如有神了。

3.可在三种遍历算法的基础上改造完成的其它二叉树算法:求叶子个数,求二叉树结点总数,求度为1或度为2的结点总数,复制二叉树,建立二叉树,交换左右子树,查找值为n的某个指定结点,删除值为n的某个指定结点,诸如此类等等等等。

如果你可以熟练掌握二叉树的递归和非递归遍历算法,那么解决以上问题就是小菜一碟了。

4.线索二叉树:线索二叉树的引出,是为避免如二叉树遍历时的递归求解。

众所周知,递归虽然形式上比较好理解,但是消耗了大量的内存资源,如果递归层次一多,势必带来资源耗尽的危险,为了避免此类情况,线索二叉树便堂而皇之地出现了。

对于线索二叉树,应该掌握:线索化的实质,三种线索化的算法,线索化后二叉树的遍历算法,基本线索二叉树的其它算法问题(如:查找某一类线索二叉树中指定结点的前驱或后继结点就是一类常考题)。

5.最优二叉树(哈夫曼树):最优二叉树是为了解决特定问题引出的特殊二叉树结构,它的前提是给二叉树的每条边赋予了权值,这样形成的二叉树按权相加之和是最小的。

相关文档
最新文档