搜档网
当前位置:搜档网 › 《数据结构》考研必须掌握的知识点与算法

《数据结构》考研必须掌握的知识点与算法

《数据结构》考研必须掌握的知识点与算法
《数据结构》考研必须掌握的知识点与算法

《数据结构》必须掌握的知识点与算法

第一章绪论

1、算法的五个重要特性(有穷性、确定性、可行性、输入、输出)

2、算法设计的要求(正确性、可读性、健壮性、效率与低存储量需求)

3、算法与程序的关系:

(1)一个程序不一定满足有穷性。例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。

(2)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。

(3)一个算法若用程序设计语言来描述,则它就是一个程序。

4、算法的时间复杂度的表示与计算(这个比较复杂,具体看算法本身,一般关心其循环的次数与N的关系、函数递归的计算)

第二章线性表

1、线性表的特点:

(1)存在唯一的第一个元素;(这一点决定了图不是线性表)

(2)存在唯一的最后一个元素;

(3)除第一个元素外,其它均只有一个前驱(这一点决定了树不是线性表)

(4)除最后一个元素外,其它均只有一个后继。

2、线性表有两种表示:顺序表示(数组)、链式表示(链表),栈、队列都是线性表,他们都可以用数组、链表来实现。

3、顺序表示的线性表(数组)地址计算方法:

(1)一维数组,设DataType a[N]的首地址为A0,每一个数据(DataType 类型)占m个字节,则a[k]的地址为:A a[k]=A0+m*k(其直接意义就是求在数据a[k]的前面有多少个元素,每个元素占m个字节)

(2)多维数组,以三维数组为例,设DataType a[M][N][P]的首地址为A000,每一个数据(DataType类型)占m个字节,则在元素a[i][j][k]的前面共有元素个数为:M*N*i+N*j+k,其其地址为:

A a[i][j][k]=A000+m*(M*N*i+N*j+k);

4、线性表的归并排序:

设两个线性表均已经按非递减顺序排好序,现要将两者合并为一个线性表,并仍然接非递减顺序。可见算法2.2

5、掌握线性表的顺序表示法定义代码,各元素的含义;

6、顺序线性表的初始化过程,可见算法2.3

7、顺序线性表的元素的查找。

8、顺序线性表的元素的插入算法,注意其对于当原来的存储空间满了后,追加存储空间(就是每次增加若干个空间,一般为10个)的处理过程,可见算法2.4

9、顺序线性表的删除元素过程,可见算法2.5

10、顺序线性表的归并算法,可见算法2.7

11、链表的定义代码,各元素的含义,并能用图形象地表示出来,以利分析;

12、链表中元素的查找

13、链表的元素插入,算法与图解,可见算法2.9

14、链表的元素的删除,算法与图解,可见算法2.10

15、链表的创建过程,算法与图解,注意,链表有两种(向表头生长、向表尾生长,分别用在栈、队列中),但他们的区别就是在创建时就产生了,可见算法2.11

16、链表的归并算法,可见算法2.12

17、建议了解所谓的静态单链表(即用数组的形式来实现链表的操作),可见算法2.13

18、循环链表的定义,意义

19、循环链表的构造算法(其与单链表的区别是在创建时确定的)、图解

20、循环链表的插入、删除算法、图解

21、双向链表的定义,意义

22、双向链表的构造算法(其与单链表的区别是在创建时确定的)、图解

23、双向链表的插入、删除算法、图解,可见算法2.18、2.19

24、补充:在循环链表中,只设立一个表尾指针比只设立一个表头指针更方便些,为什么?

第三章栈和队列

1、栈的顺序表示与实现

2、栈的链表表示与实现

3、栈的入栈、出栈操作算法

4、栈的几个经典应用(迷宫、表达式求值)

5、栈与递归的实现,如Hanoi塔问题

6、队列链式表示与实现

7、链式队列的入队、出队操作算法

8、循环队列的表示(顺序表示)和实现,特别注意其判满、判空方法、入队操作、出队操作的实现(特别重要,考得频率很大)

9、补充:共享栈的方法与实现(即两个栈共享一个空间,他们采用栈顶相向,迎面增长的存储方式)

10、补充:用两个栈来模拟一个队列的思路、算法

11、补充:表达式(前缀、后缀、中缀)的表达互换,这个操作要求对栈在表达式求值中的应用相当熟练,并要求对后面的二叉树相当熟练

12、补充:了解双端队列(只需了解)

13、补充:链栈比顺序栈的优点与缺点

14、补充:一系列元素依次入栈再出栈的顺序,经典题目为:有5个元素,其入栈次序为A、B、C、D、E,以下哪种出栈的顺序是不可能的?

15、补充:了解用循环链表实现队列,注意在该循环链表中只有一个头指针或一个表尾指针(只需了解)

16、补充:根据给出的数学公式,写出对应的递归算法,最经典的就是用递归求阶乘。

第六章 树和二叉树

1、几个重要的概念:树、森林、子树、根、终端结点(叶子)、非终端结点、双亲、孩子、兄弟、堂兄弟、度、深度、有序树、无序树、二叉树、k 叉树、完全二叉树、满二叉树、线索二叉树;

2、二叉树的5种基本形态;

3、二叉树的5个重要性质:

(1)在二叉树的第i 层上至多有2i -1个结点(i ≥1);

(2)深度为k 的二叉树至多有2k -1个结点,(k ≥1)

(3)对任何一棵二叉树T ,如果其终端结点(叶子)数为n 0,度为2的结点数为n 2,则n 0=n 2+1;

(4)具有n 个结点的完全二叉树的深度为??1log 2+n ; (5)如果对一棵有n 个结点的完全二叉树(其深度为??1log 2+n )的结点按性层序编号(从第1层到第??1log 2+n 层,每层从左到右),则对任一结点i (1≤i ≤n ),有:

(i )如果i =1,则结点i 是二叉树的根,无双亲;如果i >1,则其双亲Parent (i )是结点??2i

(ii )如果2i >n ,则结点i 无左孩子(结点i 为叶子结点);否则其左孩子LChild (i )是结点2i ;

(iii )如果2i +1>n ,则结点i 无右孩子;否则其右孩子RChild (i )是结点2i +1

利用完全二叉树的上述性质,能处理大多数完全二叉树的计算题;

4、二叉树的存储结构:

(1)了解顺序存储结构,只做了解;

(2)链式存储结构,重要,需要掌握,后面的算法都是基于此结构;

5、二叉树的遍历:

(1)能对任意一棵二叉树进行手动前序、中序、后序遍历;

(2)能将由前序+中序、后序+中序给出的序列还原成一棵二叉树;

(3)能将一个数学表达式用中序方法将其用二叉树画出来,并能写出其前缀(波兰式)、中缀、后缀(逆波兰式)表达出来;

6、二叉树的遍历递归算法(注意前、中、后序三个算法只有细微的差别),可见算法6.1,而他们的非递归算法不作要求;

7、建立二叉树链表的递归算法,可见算法6.4;

8、线索二叉树的存储结构图;

9、能用手画出任意二叉树对应的线索二叉树(中序、后序线索);

10、线索二叉树的非递归遍历算法,可见算法6.5;

11、理解线索二叉树的中序线索化过程算法,可见算法6.6;

12、手动写出任意森林、树的深度优先、广度优先遍历顺序;

13、森林、二叉树的转换过程,能用手画出即可;

14、哈夫曼树的相关概念:路径长度、带权路径长度WPL 、权值;

15、二叉哈夫曼树的构造过程,能用手动构造,并能将构造好的树用编码表示出来;

16、了解哈夫曼树的构造算法,可见算法6.12,只需要了解,无需掌握;

17、记住树的记数公式:对一棵有n 个结点的有n n C n 211

棵不同的二叉树

18、补充:二叉排序树、插入、删除结点的操作(在查找一章中有详述);

19、补充:满二叉树、完全二叉树用数组存储方式,其元素、结点对应关系;

20、补充:求二叉树的高度(深度)算法;

21、补充:将二叉树中左、右孩子交换的算法;

22、补充:将用数组存储的完全二叉树转换成链式结构的算法;

23、补充:对用数组存储的完全二叉树进行非递归的前序、中序、后序遍历算法;

24、补充:求二叉树中叶子数、度为1的、度为2的结点数算法;

25、补充:对于K 叉树,其结点总数为N ,求出该树的最大高度、高小高度;

26、补充:构造结点数为n 的k 叉哈夫曼树(其所有的结点要么度为0,要么度为k ),注意一般都需要增加m 个权为0的结点(称为虚结点),其中如果叶子结点数目不足以构成正则的k 叉树(树中只有度为k 或0的结点),即不满足(n -1)MOD (k -1)=0(其中MOD 是取余运算),需要添加权为0的结点,添加的个数为m =k -(n -1)MOD (k -1)-1。添加的位置应该是距离根结点的最远处。假设n =10,k =3,则需要添加1个权为0的虚结点(其字母可以为空)。

第七章 图

1、图的几个重要概念:顶点、弧、弧尾、弧头、边、有向图、无向图、完全图、邻接点、入度、出度、度、路径、回路(环)、连通图、连通分量、强连通图、强连通分量、生成森林、关节点、重连通图、AOV-网、AOE-网;

2、图的几种存储、表示方法:数组表示法(重要)、邻接表(最重要,应用最广)、逆邻接表(掌握)、十字链表(理解)、邻接多重表(了解),并能大致掌握他们各种方法表示的优缺点;

3、图的两种遍历顺序:深度、广度优先,建议同时掌握其算法;

4、图的生成树和生成森林(只需掌握手画方法);

5、图的最小生成树的两种算法:普里姆(Prim )算法(实质是顶点优先)、克鲁斯卡尔(Kruskal )算法(实质是边优先),掌握他们的手动构造过程,了解算法;

6、理解求关节点算法,可见算法7.10、7.11;

7、了解拓扑排序;

8、掌握由AOE-网得到关键路径的方法(手动),了解算法(7.13、7.14);

9、掌握最短路径的手动求解过程、方法(两种:迪杰斯特拉Dijkstra 、弗洛伊德Floyd ),了解算法;

10、补充:Prim 算法、Kruskal 算法、Dijkstra 算法、Floyd 算法的时间复杂度;

11、补充:了解拓扑排序算法;

12、补充:能将图的抽象定义,如有向图G =(V ,{A}),V ={v1,v2,v3,v4},A ={}画成图,也能将图用抽

象定义写出;

13、补充:能根据图的邻接表、逆邻接表、数组表示法表示出来的图画出,亦能根据图写出其邻接表、逆邻接表、数组表示法;

14、补充:了解四色定理(Four color theorem):最先是由一位叫古德里(Francis Guthrie)的英国大学生提出来的。德·摩尔根(Augustus De Morgan,1806~1871)1852年10月23日致哈密顿的一封信提供了有关四色定理来源的最原始的记载。他在信中简述了自己证明四色定理的设想与感受。四色问题的内容是:“任何一张地图只用四种颜色就能使具有共同边界的国家染上不同的颜色。”用数学语言表示,即“将平面任意地细分为不相重叠的区域,每一个区域总可以用1,2,3,4这四个数字之一来标记,而不会使相邻的两个区域得到相同的数字。”

15、补充:了解离散数学中的欧拉图、哥尼斯堡七桥问题;

16、补充:了解汉密尔顿图;

第九章查找

1、掌握几个重要的概念:静态查找表、动态查找表、平均查找长度、二叉排序树、平衡二叉树、平衡因子、B-树、B+树、哈希表;

2、顺序表的查找算法(9.1)及其时间复杂度的性能分析;

3、折半查找(二分查找)算法(9.2)及其性能分析;

4、能画出任意个数元素的二分查找过程形成的判定树;

5、掌握次优二叉查找树的构造过程,能用手画出,其算法只做了解要求;

6、掌握索引顺序表的查找(又称分块查找)基本原理,并能分析其性能;

7、能手动根据元素的顺序,构造出一棵二叉排序树;

8、掌握二叉排序树的几种算法:查找算法(9.5a、9.5b)、二叉排序树的插入算法(9.6),而插入过程就是构造二叉排序树的过程;

9、掌握二叉排序树的删除结点的手动过程及算法(9.7、9.8);

10、掌握二叉排序树的查找性能分析过程;

11、平衡二叉树的构造过程,重点在于平衡被破坏后的调整,LL型、LR型、RR型、RL型的平衡旋转处理;

12、平衡树查找的性能分析;

13、B-树的查找操作,了解其算法;

14、B-树的查找性能分析;

15、B+树的查找操作;

16、引入哈希表的目的、优点、基本原理;

17、了解几种常用的哈希函数:直接定址法、数字分析法、平方取中法、折叠法、除留余数法、随机数法;

18、掌握几种常用的处理冲突的方法:开放定址法(线性探测法、伪随机数序列法)、再哈希法、链地址法、公共溢出区法;

19、哈希表的查找性能分析;

第十章内部排序

1、掌握几个重要的概念:排序、排序方法的稳定性(即关键字相同的经排序后原顺序会不会变化)、排序算法效率的稳定性(即排序算法效率会不会受待排序数据序列的影响而出现较大的变化)、内部排序、外部排序、堆

2、直接插入排序的过程(手动分析一趟排序的过程、结果)、算法(10.1);

3、掌握折半插入排序算法(10.2)、理解2-路插入排序、了解表插入排序;

4、希尔排序过程(手动分析一趟排序的过程、结果)、算法(10.4、10.5);

5、冒泡排序过程(手动分析一趟排序的过程、结果)、算法;

6、快速排序过程(手动分析一趟排序的过程、结果)、原理、算法(10.6-8)

7、快速排序性能分析;

8、简单选择排序过程(手动分析一趟排序的过程、结果)、算法(10.9);

9、堆排序过程(手动分析建初始堆过程、一趟排序的过程、结果)、原理、算法(10.10-11),堆排序原理、过程、算法非常重要,是常考点;

10、2-路归并排序过程(手动分析一趟排序的过程、结果)、算法(10.2-4);

11、理解基数排序的原理、过程;

12、掌握各种内部排序方法的比较;

13、补充:各种内部排序的应用场合(这个比较难做,需要对各种排序算法非常清楚才能做到);

14、补充:冒泡排序的改进——鲨鱼排序过程、原理、算法;

15、补充:插入、选择、冒泡、快速、堆排序的算法效率稳定性分析,能判断哪种算法不受初始数据的影响;

16、补充:用链表实现插入排序的过程、算法;

考研数据结构必须掌握的知识点与算法-打印版

《数据结构》必须掌握的知识点与算法 第一章绪论 1、算法的五个重要特性(有穷性、确定性、可行性、输入、输出) 2、算法设计的要求(正确性、可读性、健壮性、效率与低存储量需求) 3、算法与程序的关系: (1)一个程序不一定满足有穷性。例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。 (2)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。 (3)一个算法若用程序设计语言来描述,则它就是一个程序。 4、算法的时间复杂度的表示与计算(这个比较复杂,具体看算法本身,一般关心其循环的次数与N的关系、函数递归的计算) 第二章线性表 1、线性表的特点: (1)存在唯一的第一个元素;(这一点决定了图不是线性表) (2)存在唯一的最后一个元素; (3)除第一个元素外,其它均只有一个前驱(这一点决定了树不是线性表) (4)除最后一个元素外,其它均只有一个后继。 2、线性表有两种表示:顺序表示(数组)、链式表示(链表),栈、队列都是线性表,他们都可以用数组、链表来实现。 3、顺序表示的线性表(数组)地址计算方法: (1)一维数组,设DataType a[N]的首地址为A0,每一个数据(DataType类型)占m个字节,则a[k]的地址为:A a[k]=A0+m*k(其直接意义就是求在数据a[k]的前面有多少个元素,每个元素占m个字节) (2)多维数组,以三维数组为例,设DataType a[M][N][P]的首地址为A000,每一个数据(DataType 类型)占m个字节,则在元素a[i][j][k]的前面共有元素个数为:M*N*i+N*j+k,其其地址为: A a[i][j][k]=A000+m*(M*N*i+N*j+k); 4、线性表的归并排序: 设两个线性表均已经按非递减顺序排好序,现要将两者合并为一个线性表,并仍然接非递减顺序。可见算法2.2 5、掌握线性表的顺序表示法定义代码,各元素的含义; 6、顺序线性表的初始化过程,可见算法2.3 7、顺序线性表的元素的查找。 8、顺序线性表的元素的插入算法,注意其对于当原来的存储空间满了后,追加存储空间(就是每次增加若干个空间,一般为10个)的处理过程,可见算法2.4 9、顺序线性表的删除元素过程,可见算法2.5 10、顺序线性表的归并算法,可见算法2.7 11、链表的定义代码,各元素的含义,并能用图形象地表示出来,以利分析; 12、链表中元素的查找 13、链表的元素插入,算法与图解,可见算法2.9 14、链表的元素的删除,算法与图解,可见算法2.10 15、链表的创建过程,算法与图解,注意,链表有两种(向表头生长、向表尾生长,分别用在栈、队列中),但他们的区别就是在创建时就产生了,可见算法2.11 16、链表的归并算法,可见算法2.12 17、建议了解所谓的静态单链表(即用数组的形式来实现链表的操作),可见算法2.13 18、循环链表的定义,意义 19、循环链表的构造算法(其与单链表的区别是在创建时确定的)、图解

数据结构与算法基础知识总结

数据结构与算法基础知识总结 1 算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 2 数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。 线性结构条件:

(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 3 线性表及其顺序存储结构 线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:adr(ai)=adr(a1)+(i-1)k,,adr(a1)为第一个元素的地址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 4 栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出”(filo)或“后进先出”(lifo)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。rear指针指向队尾,front指针指向队头。 队列是“先进行出”(fifo)或“后进后出”(lilo)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。循环队列:s=0表示队列空,s=1且front=rear表示队列满

知识点大纲全国计算机等级考试数据结构和算法

全国计算机等级考试二级office 二级公共基础知识部分(10分*10题) 第一章. 算法与数据结构 考点1:算法概念 ● 算法 算法:指解题方案准确而完整的描述。 算法不等于程序,也不是计算方法。程序编制通常不优于算法设计。 考点2:算法的四个基本特征 可行性、确定性(算法步骤有明确定义)、有穷性、拥有足够情报 考点3:算法的时间复杂度和空间复杂度 1. 时间复杂度:执行算法所需的工作量。 算法执行的基本次数是问题规模的函数,固定规模下还与输入有关。 2. 空间复杂度:算法执行需要的存储空间(算法程序、输入初始数据、某种数据结构所需空间) ● 数据结构 (反映数据元素之间关系的数据元素集合,即带有结构的数据元素的集合,结构指数据元素之间 的前后件(前驱、后继)关系)。目的是提高数据处理的效率(速度/空间) 数据的逻辑结构:是反映数据元素之间逻辑关系的数据结构。 可以表示成:B=(D ,R ) B 表示数据结构;D 表示数据元素集合;R 表示数据元素之间的前后件关系 【例:一年四季的数据结构可以表示成B=(D ,R );D=(春,夏,秋,冬);B={(春,夏), (夏,秋),(秋,冬)}】 数据结构的图形表示: 数据元素:用中间标有元素值的方框表示,称为结点。 逻辑关系:用有向线段从前件指向后件。没有前件的结点称为根结点;没有后件的结点称为 终端结点(叶子结点) B=(D ,R ) D={di|1≤i ≤7} ={d1,d2,d3,d4,(d1,d3),(d1,d7),(d2,d4),(d3,d6),(d4,d5)} 考点4:数据的存储结构 数据的存储结构:指数据的逻辑结构在计算机 储存空间的存放形式。既储存数据元素的信息,还有元素的前后件关系信息。 数据的逻辑关系与数据的存储结构不一定相同。数据结构一般可以表示成多种存储结构,常

(完整版)非常实用的数据结构知识点总结

数据结构知识点概括 第一章概论 数据就是指能够被计算机识别、存储和加工处理的信息的载体。 数据元素是数据的基本单位,可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。 数据结构的定义: ·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。 ·线性结构:多对多关系。 ·存储结构:是逻辑结构用计算机语言的实现。·顺序存储结构:如数组。 ·链式存储结构:如链表。 ·索引存储结构:·稠密索引:每个结点都有索引项。 ·稀疏索引:每组结点都有索引项。 ·散列存储结构:如散列表。 ·数据运算。 ·对数据的操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。 ·常用的有:检索、插入、删除、更新、排序。 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。 ·结构类型:由用户借助于描述机制定义,是导出类型。 抽象数据类型ADT:·是抽象数据的组织和与之的操作。相当于在概念层上描述问题。 ·优点是将数据和操作封装在一起实现了信息隐藏。 程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。 算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。 评价算法的好坏的因素:·算法是正确的; ·执行算法的时间; ·执行算法的存储空间(主要是辅助存储空间); ·算法易于理解、编码、调试。 时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。 渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。 评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。 算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。 时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O (n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

数据结构与算法设计知识点

数据结构与算法设计知识点 试题类型: 本课程为考试科目(闭卷笔试),试题类型包括:概念填空题(10 %),是非判断题(10 %),单项选择题(40 %),算法填空题(10%),算法应用题(20 %),算法设计题(10 %)。 第一章绪论 重点内容及要求: 1、了解与数据结构相关的概念(集合、数据、数据元素、数据项、关键字、元 素之间的关系等)。 数据:所有能被输入到计算机中,且能被计算机处理的符号的 集合。是计算机操作的对象的总称。是计算机处理的信息的某种特定 的符号表示形式。 数据元素:是数据(集合)中的一个“个体”,数据结构中的基本 单位,在计算机程序中通常作为一个整体来考虑和处理。 数据项:是数据结构中讨论的最小单位,数据元素可以是一个或 多个数据项的组合 关键码:也叫关键字(Key),是数据元素中能起标识作用的数 据项。 其中能起到唯一标识作用的关键码称为主关键码(简称主码); 否则称为次关键码。通常,一个数据元素只有一个主码,但可以有多 个次码。 关系:指一个数据集合中数据元素之间的某种相关性。 数据结构:带“结构”的数据元素的集合。这里的结构指元素之 间存在的关系。 数据类型:是一个值的集合和定义在此集合上的一组操作的总

称。 2、掌握数据结构的基本概念、数据的逻辑结构(四种)和物理结构(数据元素 的表示与关系的表示、两类存储结构:顺序存储结构和链式存储结构)。 数据结构包括逻辑结构和物理结构两个层次。 数据的逻辑结构:是对数据元素之间存在的逻辑关系的一种抽象的描述,可以用一个数据元素的集合和定义在此集合上的若干关系来表示 逻辑结构有四种:线性结构、树形结构、图状结构、集合结构数据的物理结构:是其逻辑结构在计算机中的表示或实现,因此又称其为存储结构。 存储结构:顺序存储结构和链式存储结构 顺序存储结构:利用数据元素在存储器中相对位置之间的某种特定的关系来表示数据元素之间的逻辑关系; 链式存储结构:除数据元素本身外,采用附加的“指针”表示数据元素之间的逻辑关系。 3、了解算法分析的基本方法,掌握算法时间复杂度相关的概念。 算法:是为了解决某类问题而规定的一个有限长的操作序列 或处理问题的策略 一个算法必须满足以下五个重要特性:1.有穷性2.确定性3.可行性4.有输入5.有输出 设计算法时,通常还应考虑满足以下目标: 1.正确性, 2.可读性, 3.健壮性 4.高效率与低存储量需求

C语言版数据结构知识点汇总

引言 用计算机解决问题一般步骤: 一般来说,用计算机解决一个具体问题时,大致经过以下几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序进行测试调整知道的到最终解答。寻求数学模型的实质就是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。 三种经典的数学模型 图书书目自动检索系统——线性关系 博弈问题——树 城市道路问题——图 数据结构(data structure ) 简单的解释:相互之间存在一种或多种特定关系的数据元素的集合。 数据间的联系有逻辑关系、存储联系,通常的数据结构指的是逻辑结构。 前面提到的三种经典的数学模型体现了数据结构的基本结构,数据结构通常有如下四种关系:(1)集合结构 (2)线性结构 (3)树形结构 (4)图状结构 ☆ 线性表(一) N 个数据元素的有限序列 存储结构:顺序存储结构、链式存储结构 当需要在顺序存储的线性表中插入一个数据元素时,需要顺序移动后续的元素以“腾”出某个合适的位置放置新元素。删除元素呢? ☆ 线性表(二) 链式存储 插入新元素的时候只需要改变指针所指向的地址。 ☆ 二维数组与线性表 如果某一线性表,它的每一个数据元素分别是一个线性表,这样的二维表在数据实现上通常使用二维数组。 二维数组的一个形象比喻—— 多个纵队形成的方块 m * n ☆ 数组地址计算问题 题目描述:已知N*(N+1) / 2个数据,按行的顺序存入数组b[1],b[2],…中。其中第一个下标表示行,第二个下标表示列。若aij (i>=j ,j=1,2,…,,n)存于b[k]中,问:k,i,j 之间的关系如何表示?给定k 值,写出能决定相应i,j 的算法。 具体问题 数学 模型 算法 编程、调试 得到答案

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

《数据结构》复习重点知识点归纳 一.数据结构的章节结构及重点构成 数据结构学科的章节划分基本上为:概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文件,动态存储分配。 对于绝大多数的学校而言,“外排,文件,动态存储分配”三章基本上是不考的,在大多数高校的计算机本科教学过程中,这三章也是基本上不作讲授的。所以,大家在这三章上可以不必花费过多的精力,只要知道基本的概念即可。但是,对于报考名校特别是该校又有在试卷中对这三章进行过考核的历史,那么这部分朋友就要留意这三章了。 按照以上我们给出的章节以及对后三章的介绍,数据结构的章节比重大致为: ·概论:内容很少,概念简单,分数大多只有几分,有的学校甚至不考。 ·线性表:基础章节,必考内容之一。考题多数为基本概念题,名校考题中,鲜有大型算法设计题,如果有,也是与其它章节内容相结合。 ·栈和队列:基础章节,容易出基本概念题,必考内容之一。而栈常与其它章节配合考查,也常与递归等概念相联系进行考查。 ·串:基础章节,概念较为简单。专门针对于此章的大型算法设计题很少,较常见的是根据KMP进行算法分析。 ·多维数组及广义表:基础章节,基于数组的算法题也是常见的,分数比例波动较大,是出题的“可选单元”或“侯补单元”。一般如果要出题,多数不会作为大题出。数组常与“查找,排序”等章节结合来作为大题考查。 ·树和二叉树:重点难点章节,各校必考章节。各校在此章出题的不同之处在于,是否在本章中出一到两道大的算法设计题。通过对多所学校的试卷分析,绝大多数学校在本章都曾有过出大型算法设计题的历史。 ·图:重点难点章节,名校尤爱考。如果作为重点来考,则多出现于分析与设计题型当中,可与树一章共同构成算法设计大题的题型设计。 ·查找:重点难点章节,概念较多,联系较为紧密,容易混淆。出题时可以作为分析型题目给出,在基本概念型题目中也较为常见。算法设计型题中可以数组结合来考查,也可以与树一章结合来考查。 ·排序:与查找一章类似,本章同属于重点难点章节,且概念更多,联系更为紧密,概念之间更容易混淆。在基本概念的考查中,尤爱考各种排序算法的优劣比较此类的题。算法设计大题中,如果作为出题,那么常与数组结合来考查。

数据结构知识点整理

数据是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中,被计算机程序识别和处理的符号(数值、字符等)的集合。 数据元素(数据成员)是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等 数据对象具有相同性质的数据元素(数据成员)的集合 数据结构由某一数据对象及该对象中所有数据成员之间的关系组成。记为Data_Structure = {D, R}其中,D是某一数据对象,R是该对象中所有数据成员之间的关系的有限集合。 数据类型是指一种类型,以及定义在这个值集合上的一组操作的总称。 判断一个算法的优劣主要标准:正确性、可使用性、可读性、效率、健壮性、简单性。 算法效率的衡量方法:后期测试,事前估计 算法分析是算法的渐进分析简称 数据结构包括“逻辑结构”和“物理结构”两个方面(层次): 逻辑结构是对数据成员之间的逻辑关系的描述,它可以用一个数据成员的集合和定义在此集合上的若干关系来表示物理结构是逻辑结构在计算机中的表示和实现,故又称“存储结构” 线性表的定义:n(3 0)个表项的有限序列L =(a1, a2, …, an)ai是表项,n是表长度。第一个表项是表头,最后一个是表尾。 线性表的特点:表中元素的数据类型相同;线性表中,结点和结点间的关系是一对一的,有序表和无序表线性表的存储方式。一,顺序存储方式,二,链表存储方式。 顺序表的存储表示有2种方式:静态方式和动态方式。 顺序表的定义是:把线性表中的所有表项按照其逻辑顺序依次存储到从计算机存储中指定存储位置开始的一块连续的存储空间中。 顺序表的特点:用地址连续的一块存储空间顺序存放各表项,各表项的逻辑顺序与物理顺序一致,对各个表项可以顺序访问,也可以随机访问。 单链表是一种最简单的链表表示,也叫线性链表,用她来表示线性表时,用指针表示结点间的逻辑关系。特点:是长度可以很方便地进行扩充。 连续存储方式(顺序表)特点:存储利用率高,存取速度快缺点:插入、删除等操作时需要移动大量数据: 链式存储方式(链表)特点:适应表的动态增长和删除。缺点:需要额外的指针存储空间

数据结构与算法知识点必备

数据结构与方法 1、算法的基本特征:可行性、确定性、有穷性、拥有足够的情报 2、算法的基本运算和操作:算术运算、逻辑运算、关系运算、数据传输 3、算法的基本控制结构:顺序结构、选择结构、循环(重复)结构 4、算法设计的基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法 5、算法的复杂度主要包括:时间复杂度、空间复杂度 6、算法的时间复杂度:指执行算法所需要的计算工作量 7、算法的空间复杂度:指执行这个算法所需要的内存空间 8、数据结构主要研究:数据的逻辑结构、数据的存储结构、对各种数据结构进行的运算 9、数据结构研究的目的:提高数据处理的效率 10、数据处理的效率:数据处理的速度、减少处理过程中占用计算机的存储空间 11、数据处理:指对数据集合中的各元素以各种方式进行运算 12、数据元素:指在数据处理中,每一个需要处理的对象都可以抽象成数据元素 13、数据结构:指反映数据元素之间关系的数据元素集合的表示 14、数据的逻辑结构:指反映数据元素之间逻辑关系的数据结构,两要素:数据元素的集合、数据元素在集合上的关系 15、数据的存储结构:指数据的逻辑结构在计算机存储空间的存放形式,常用的存储结构有:顺序、链接、索引等 16、数据结构的图形表示中每个元素加上方框成为结点 17、数据结构一般分为:线性结构、非线性结构 18、线性结构满足:有且仅有一个根结点、每个结点最多有一个前件和后件、在一个线性结构中插入和删除任何一个结点后还是线性结构 19、线性表定义:线性表是由n个数据元素a1、a2、a3、a4……an组成的一个有限序列,表中每一个数据元素,除了第一个外,有且仅有一个前件,除了最后一个外,有且仅有一个后件 20、非线性表的特征:有且只有一个根节点a1,它无前件、有且只有一个终结点an,它无后件、除了第一个和最后一个外,其他所有结点只有一个前件和一个后件 21、线性表的长度:线性表中的结点的个数n成为线性表的长度,当n=0时,成为空表 22、线性表的顺序存储的特点:所有元素所占的存储空间是连续的、各数据元素在存储空间中是按逻辑顺序一次存放的 23、线性表的随机存取地址计算公式:ADD(ai)=ADD(a1)+(i-1)*k 24、线性表的主要操作:插入、删除、查找、排序、分解、合并、复制、逆转 25、栈的定义:栈是限定在一端进行插入和删除的线性表,它按照“先进后出,后进先出”的原则组织数据 26、栈的顺序存储:在程序设计语言中,一般一维数组S(1:m)作为栈的顺序存储空间,其中m为栈的最大容量 27、栈的基本运算:入栈、退栈、读栈顶元素 28、入栈运算:首先将栈顶指针(top)加1,然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,称为“上溢”错误 29、退栈运算:首先将栈顶元素赋给一个指定的变量,然后将栈顶指针(top)减1。当栈顶指针为0时,说明栈空,成为“下溢”错误 30、队列的定义:队列是指允许在一端进行插入,而在另一端进行删除的线性表,它按照“先进先出”的原则组织数据

数据结构知识点全面总结—精华版

第1章绪论 内容提要: ◆数据结构研究的内容。 针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。 数据结构涵盖的内容: ◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。 数据——所有能被计算机识别、存储和处理的符号的集合。 数据元素——是数据的基本单位,具有完整确定的实际意义。 数据对象——具有相同性质的数据元素的集合,是数据的一个子集。 数据结构——是相互之间存在一种或多种特定关系的数据元素的集合,表示为: Data_Structure=(D, R) 数据类型——是一个值的集合和定义在该值上的一组操作的总称。 抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作, 它由基本的数据类型构成。 ◆算法的定义及五个特征。 算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 算法的基本特性:输入、输出、有穷性、确定性、可行性 ◆算法设计要求。 ①正确性、②可读性、③健壮性、④效率与低存储量需求 ◆算法分析。 时间复杂度、空间复杂度、稳定性 学习重点: ◆数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。 ◆用计算语句频度来估算算法的时间复杂度。

第二章线性表 内容提要: ◆线性表的逻辑结构定义,对线性表定义的操作。 线性表的定义:用数据元素的有限序列表示 ◆线性表的存储结构:顺序存储结构和链式存储结构。 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。 链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。通过指针来实现! ◆线性表的操作在两种存储结构中的实现。 数据结构的基本运算:修改、插入、删除、查找、排序 1)修改——通过数组的下标便可访问某个特定元素并修改之。 核心语句:V[i]=x; 顺序表修改操作的时间效率是O(1) 2) 插入——在线性表的第i个位置前插入一个元素 实现步骤: ①将第n至第i 位的元素向后移动一个位置; ②将要插入的元素写到第i个位置; ③表长加1。 注意:事先应判断: 插入位置i 是否合法?表是否已满? 应当符合条件:1≤i≤n+1 或i=[1, n+1] 核心语句: for (j=n; j>=i; j--) a[j+1]=a[ j ]; a[ i ]=x; n++; 插入时的平均移动次数为:n(n+1)/2÷(n+1)=n/2≈O(n) 3) 删除——删除线性表的第i个位置上的元素 实现步骤: ①将第i+1 至第n 位的元素向前移动一个位置; ②表长减1。 注意:事先需要判断,删除位置i 是否合法? 应当符合条件:1≤i≤n 或i=[1, n] 核心语句: for ( j=i+1; j<=n; j++ ) a[j-1]=a[j]; n--;

数据结构与算法试题(1)

一、选择题 1.在逻辑上可以把数据结构分成(A) A.线性结构和非线性结构 B.动态结构和静态结构 C.紧凑结构和非紧凑结构 D.内部结构和外部结构 2. 单链表中各结点之间的地址(C) A.必须连续 B.部分必须连续 C.不一定连续 D.以上均不对 3.在一个长度为n的顺序表中向第i个元素(0front==L C.P==NULL D.P->rear==L 12. 已知P为单链表中的非首尾结点,删除P结点的后继结点Q的语句为(A)。 A.P->NEXT=Q->NEXT;FREE(Q); B.Q->NEXT=P; FREE(Q); C.Q->NEXT=P->NEXT;FREE(Q); D.P->NEXT=S;S->NEXT=P; 13.循环队列SQ队满的条件是(B)。 A.SQ->rear==SQ->front B. (SQ->rear+1)%MAXLEN==SQ->front 23.最小生成树的构造可使用(B)算法。 A.Dijkstra算法 B.Prim算法 C.Haffman算法 D.Floyd算法 24. 具有32个结点的完全二叉树的深度为(B)。 A. 5 B.6 C.7 D.8 25. 在有n个叶子结点的哈夫曼树中,其结点总数为(D)。 A.不确定 B.2n C.2n+1 D.2n-1 26.下列陈述正确的是(B)。 A.二叉树是度为2的有序树 B. 二叉树中最多只有二棵树,且有左右子树之分 C.二叉树必有度为2的结点 D. 二叉树中结点只有一个孩子时无左右之分 27.先序为A,B,C的二叉树共有(A)种。 A.3 B.4 C.5 D.6 28.在树结构中,若结点B有3个兄弟,A是B的父亲结点,则A的度为(B)。

数据结构与算法知识点

数据结构与算法 一知识点: 1.复杂度分析 2.线性表 2.1顺序表、链表特点 2.2顺序表的插入,删除;单链表的插入,删除;,查找,合并,单链表的综合运用; 2.3双链表的插入,删除; 3.栈与队列 3.1栈概念、操作;栈的应用 3.2队列概念、操作;队列的应用 3.3递归 4.字符串 4.1 字符串概念 4.2 模式匹配概念、简单模式匹配算法 5. 二叉树 5.1 二叉树概念、性质 5.2 完全二叉树概念、性质 5.3 满二叉树定义、性质 5.4 二叉树的遍历算法实现(递归与非递归)、线索二叉树的操作 5.5二叉搜索树概念及查找、插入、删除算法 5.6 A VL树概念;A VL树平衡化旋转,插入算法,删除算法 5.7 堆;堆的初始化、堆的插入、删除算法 5.8 Huffman树;Huffman编码 6. 树的概念,树的周游,森林的周游;树、森林与二叉树之间的转换 7. 图的性质 7.1图的性质、图的存储、图的遍历(DFS,BFS) 7.2最小生成树概念,Prim算法,Kruscal算法 7.3最短路径算法:Dijkstra 算法,Floyd算法 7.4拓扑排序,关键路径 8. 查找 8.1静态查找【顺序查找、二分法查找、分块查找】 8.2 动态查找技术:B树、B+树概念、性质;B树插入、删除的调整 8.2散列、冲突解决(线性、二次、随机、双散列) 9. 各种排序算法【直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、直接

选择排序、堆排序、归并排序、基数排序】时间复杂度,空间复杂度,稳定性方面,算法思想,代码实现 二往届考试题型 1.选择题 2.填空题 3.简答题 4.编程题 或者 1.选择题 2.简答题 3.编程题

数据结构(C语言版)知识点复习资料

数据结构复习资料 一、填空题 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。 2. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。 3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。 4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。 5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。 6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。 7. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。 8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。 9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。 10. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。 11. 一个算法的效率可分为时间效率和空间效率。 12. 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。 13. 线性表中结点的集合是有限的,结点间的关系是一对一的。 14. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 n-i+1 个元素。 15. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动 n-i个元素。 16. 在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。 17. 顺序表中逻辑上相邻的元素的物理位置必定相邻。单链表中逻辑上相邻的元素的物理位置不一定相邻。 18.在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。 19.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。

数据结构复习重点归纳(适于清华严蔚敏)

一、数据结构的章节结构及重点构成 数据结构学科的章节划分基本上为:概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文件,动态存储分配。对于绝大多数的学校而言,“外排,文件,动态存储分配”三章基本上是不考的,在大多数高校的计算机本科教学过程中,这三章也是基本上不作讲授的。所以,大家在这三章上可以不必花费过多的精力,只要知道基本的概念即可。但是,对于报考名校特别是该校又有在试卷中对这三章进行过考核的历史,那么这部分朋友就要留意这三章了。 按照以上我们给出的章节以及对后三章的介绍,数据结构的章节比重大致为: 概论:内容很少,概念简单,分数大多只有几分,有的学校甚至不考。 线性表:基础章节,必考内容之一。考题多数为基本概念题,名校考题中,鲜有大型算法设计题。如果有,也是与其它章节内容相结合。 栈和队列:基础章节,容易出基本概念题,必考内容之一。而栈常与其它章节配合考查,也常与递归等概念相联系进行考查。 串:基础章节,概念较为简单。专门针对于此章的大型算法设计题很少,较常见的是根据KMP进行算法分析。 多维数组及广义表:基础章节,基于数组的算法题也是常见的,分数比例波动较大,是出题的“可选单元”或“侯补单元”。一般如果要出题,多数不会作为大题出。数组常与“查找,排序”等章节结合来作为大题考查。 树和二叉树:重点难点章节,各校必考章节。各校在此章出题的不同之处在于,是否在本章中出一到两道大的算法设计题。通过对多所学校的试卷分析,绝大多数学校在本章都曾有过出大型算法设计题的历史。 图:重点难点章节,名校尤爱考。如果作为重点来考,则多出现于分析与设计题型当中,可与树一章共同构成算法设计大题的题型设计。 查找:重点难点章节,概念较多,联系较为紧密,容易混淆。出题时可以作为分析型题目给出,在基本概念型题目中也较为常见。算法设计型题中可以数组结合来考查,也可以与树一章结合来考查。 排序:与查找一章类似,本章同属于重点难点章节,且概念更多,联系更为紧密,概念之间更容易混淆。在基本概念的考查中,尤爱考各种排序算法的优劣比较此类的题。算法设计大题中,如果作为出题,那么常与数组结合来考查。 二、数据结构各章节重点勾划 第0章概述 本章主要起到总领作用,为读者进行数据结构的学习进行了一些先期铺垫。大家主要注

《数据结构与算法》知识点整理

《数据结构与算法》知识点整理 中山大学 吕双全 一,Introduction 1,基(mei)本(shen)概(me)念(yong) 数据结构研究数据的组织方式和相应的抽象操作。 2,结合其他数据结构的时间空间复杂度分析——如09级第9题 二,栈 1,栈的实现:顺序存储,注意push/pop/top等操作实现 2,栈的应用:括号匹配、后缀表达式计算等 三,队列 1,队列的实现:循环队列的数组实现,注意队头队尾的移动、下标的处理【i = (i + 1) % max】2,应用:广搜、树的层次遍历、机场调度等 四,链式(Linked)栈和队列 1,链式实现下的创建、插入、删除、查找。做题时要画出每个node的图,帮助理解。比如这样: 2,顺序和链式实现适用的场合

五,递归 1,s tack frame: 调用记录用栈保存 2,T ree of subprogram call或recusive tree:就是画执行过程中函数调用的顺序,类似下图: 3,设计递归算法(写代码) 4,递归的消除(如尾部递归); (1)尾递归:(可能考概念,不会考实现)如果一个函数中所有递归形式的调用都出现在函数的末尾, 我们称这个递归函数是尾递归的。比如:,函数末尾调用了自己,所以是尾递归。 使用尾递归好处:节省栈的空间。

递归到非递归有两种方法:(i)迭代,根据递归算法画出 流程图,然后建立循环结构。(ii)设置栈。 5,理解回溯法,分治法。 六,线性表(List)和串(String) 1,list的操作的分析和实现(写代码):Insert插入,Remove删除,retrieve提取(数组中就是“a[3]”的形式提取),traverse遍历(对每个元素采取某种操作) 注:注意特殊情况,如头和尾的处理 2,对这些操作的时间复杂度分析: (i) 顺序表实现(利用数组):Insert和Remove操作,平均移动一半元素,所以是O(n)。retrieve 则为O(1)。 (ii) 链式实现(写代码) 不同实现方式的比较: 3,广义表(General List):每个元素类型可以不同,也可以为子表。比如:C=(‘a’, (1,2,’b’)) 就是广义表。 七,查找 1,顺序查找如何实现,特点,复杂度。 注:复杂度就是查找长度:O(n) 2,二分查找的实现,二分查找的时间复杂度(O(log2n)); 注: (1)要求list必须是有序的

《数据结构与算法》课程教学大纲

《数据结构与算法》课程教学大纲 课程代码:0520060 课程名称:数据结构与算法 学时:51 学分:3 课程类型:必修专业基础课 适用专业:计算机应用技术 开课院系:计算机科学与技术 先修课程:程序设计基础 一、课程性质和任务 本课程是计算机及相关专业的一门专业基础课。它是一般程序设计、其他系统程序和大型应用程序设计的重要基础。通过本课程的学习,使学生掌握数据组织、存储和运算的基本原理和方法,培养学生进行数据结构的算法设计及分析问题的能力,使学生能够编写出正确、清晰、质量较高的程序,并且为学生后续课程打下良好的基础。 二、教学内容和基本要求 (一)绪论:3学时 基本要求: 1、了解数据结构的发展及所处的地位; 2、深刻理解数据结构的基本概念和术语; 3、掌握算法描述及算法的评价标准。 重点难点: 重点:数据结构的概念和术语。 难点:时间复杂度的分析。 (二)线性表:6学时 基本要求: 1、理解线性表的概念、存储结构; 2、深刻理解线性表的顺序存储结构的特点、类型描述,熟练掌握插入、删除、查找操 作的算法实现; 3、熟练掌握线性表的链式存储结构的特点、类型描述,插入、删除、查找操作的算法 实现; 4、掌握循环链表、双向链表及其基本操作的算法。 重点难点: 重点:线性表的顺序存储和链式存储结构。 难点:线性表的链式存储。 (三)栈:6学时 基本要求:

1、理解堆栈的概念、存储结构; 2、熟练掌握顺序存储和链式存储两种结构下的进栈、出栈的算法。 重点难点: 重点:堆栈及其操作。 难点:递归方法的应用。 (四)队列:6学时 基本要求: 1、理解队列的概念、存储结构; 2、熟练掌握顺序存储和链式存储两种结构下的入队、出队的算法。 重点难点: 重点:队列及其操作。 难点:循环队列的使用。 (五) 串:6学时 基本要求: 1、理解字符串的概念,掌握字符串的存储结构。 2、了解字符串操作的应用。 重点难点: 重点:字符串的存储结构。 难点:字符串操作的实现。 (六)树和二叉树:6学时 基本要求: 1、理解树及二叉树的基本概念; 2、深刻理解二叉树的定义、性质、存储结构,熟练掌握遍历和线索二叉树的方法; 3、掌握哈夫曼树与哈夫曼编码; 4、掌握树及森林与二叉树之间的转换。 重点难点: 重点:二叉树的遍历、线索及应用。 难点:哈夫曼树的构造。 (七)图:6学时 基本要求: 1、理解图的概念及基本术语; 2、掌握图的邻接矩阵和邻接表的存储结构; 3、熟练掌握图的深度优先遍历和广度优先遍历的方法; 4、了解图的遍历在实际中的应用; 5、了解最小生成树和最短路径。 重点难点: 重点:图的存储结构。 难点:图的遍历。 (八)查找:6学时 基本要求:

数据结构知识点全面总结—精华版

数据结构知识点全面总结— 精华版 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

第1章绪论 内容提要: ◆数据结构研究的内容。 针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。 数据结构涵盖的内容: ◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。 数据——所有能被计算机识别、存储和处理的符号的集合。 数据元素——是数据的基本单位,具有完整确定的实际意义。 数据对象——具有相同性质的数据元素的集合,是数据的一个子集。 数据结构——是相互之间存在一种或多种特定关系的数据元素的集合,表示为: Data_Structure=(D, R) 数据类型——是一个值的集合和定义在该值上的一组操作的总称。 抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作,它由基本的数据类型构成。 ◆算法的定义及五个特征。 算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 算法的基本特性:输入、输出、有穷性、确定性、可行性 ◆算法设计要求。 ①正确性、②可读性、③健壮性、④效率与低存储量需求 ◆算法分析。 时间复杂度、空间复杂度、稳定性 学习重点:

◆数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。 ◆用计算语句频度来估算算法的时间复杂度。 第二章线性表 内容提要: ◆线性表的逻辑结构定义,对线性表定义的操作。 线性表的定义:用数据元素的有限序列表示 ◆线性表的存储结构:顺序存储结构和链式存储结构。 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。 链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。通过指针来实现! ◆线性表的操作在两种存储结构中的实现。 数据结构的基本运算:修改、插入、删除、查找、排序 1)修改——通过数组的下标便可访问某个特定元素并修改之。 核心语句: V[i]=x; 顺序表修改操作的时间效率是 O(1) 2) 插入——在线性表的第i个位置前插入一个元素 实现步骤:

《数据结构与算法》教学大纲

《数据结构与算法》教学大纲 一、课程概述 1. 课程研究对象和研究内容 算法与数据结构是通讯工程专业选修课,主要研究典型的算法及其数据的逻辑结构及其基本操作在计算机中的表示和实现。 本标准的编写依据是2008级专业教学计划,适用于通讯工程专业及计算机科学与技术专业 2. 课程在整个课程体系中的地位 算法与数据结构是通讯工程专业的任选课程。前修课程包括:离散数学、C语言等,后续课程:软件工程、人工智能,该课程可以在大学三、四年级开设。 二、课程目标 1.知道《算法与数据结构》这门学科的性质、地位和独立价值。知道这门学科的研究范围、分析框架、研究方法、学科进展和未来方向。 2.理解这门学科的基本概念、主要结构类型和算法,尤其是典型的算法及其评价指标、数据结构的三要素、存储结构的实现和算法的评价策略。 3.学会分析研究计算机加工的数据的结构特性,以便为实际应用问题所涉及到的数据选择适当的逻辑结构、存储结构及其算法。 逐步理解算法的时间分析和空间分析的技术。 5.培养数据抽象能力;训练复杂程序设计的技能;要求编写的程序结构清楚和正确易读,养成良好程序设计习惯。 三、课程内容和要求 这门学科的知识与技能要求分为知道、理解、掌握、学会四个层次。这四个层次的一般涵义表述如下: 知道———是指对这门学科和教学现象的认知。 理解———是指对这门学科涉及到的概念、原理、策略与技术的说明和解释,能提示所涉及到的教学现象演变过程的特征、形成原因以及教学要素之间的相互关系。 掌握———是指运用已理解的教学概念和原理说明、解释、类推同类教学事件和现象。

学会———是指能模仿或在教师指导下独立地完成某些教学知识和技能的操作任务,或能识别操作中的一般差错。 教学内容和要求表中的“√”号表示教学知识和技能的教学要求层次。 本标准中打“*”号的内容可作为自学,教师可根据实际情况确定要求或不布置要求。 教学内容及教学要求表

相关主题