您的当前位置:首页正文

数据结构复习提要

来源:步旅网
复习提要

绪论:

1、 什么是数据、数据元素、数据项、数据结构、

数据类型、抽象数据类型

2、 数据结构和算法的研究范畴;

3、 数据的逻辑结构与物理结构、逻辑结构与物理结构间的关系;

数据结构的二元组表示,对应的图形表示,序偶和边之间的对应关系;

4、 算法的定义、算法的特性和五大要素、算法的评价、算法的时间和空间代价; 5、 空间复杂度度量;时间复杂度度量;时间复杂度的渐进表示法(数量级表示);渐进的

空间复杂度。

6、 计算语句频度和估算算法时间复杂度方法; 7、 算法的描述:用伪C语言/C/VB;

8、 给定算法的最好、最差和平均这三种情况的时间复杂度的计算

线性表:

1、 线性表的概念、线性表的逻辑结构特性 2、 线性表的几种存储实现方式:

顺序存储 链式存储

3、 在使用上述存储结构的线性表上实现指定操作功能(包括线性表的各种基本运算,比如:

搜索、插入、删除、查找、归并、排序等)的算法的设计与分析 4、 线性表的顺序存储结构的类型定义和实现 5、 应用顺序表作为集合的简单操作

6、 链表与线性表一样,是一种实现级结构 7、 指针基本操作

8、 向链表中一个结点之后(前)插入新结点或从链表中删除一个结点的后缀结点的指针链

接过程

9、 单链表的结构···

10、单链表的定义、构造、插入与删除等算法 11、双向链表的特点、定义及相关算法的实现

12、循环链表的特点和类型定义,以及用循环链表解决问题的方法 13、静态链表的定义、特点及相关操作的实现

堆栈鱼队列:

1、 栈的定义、特性和栈的抽象数据类型的描述

2、 栈的顺序表示、链式表示以及相应操作和运算的实现和分析,注意栈空和栈满的条件 3、 利用栈解决简单问题的算法分析和设计

4、 栈的应用:火车车厢重排问题、数制转换问题、表达式求值问题和括号匹配问题 5、 算术表达式的前缀、中缀和后缀表示法,以及相互转换的规则

1

6、 三种表达式求值的算法,重点:堆栈的使用 7、 队列的定义、特性

8、 队列的顺序表示、链式表示以及相应操作和运算的实现

9、 利用队列解决简单问题的算法分析和设计,重点:离散事件仿真

10、循环队列的定义、特性及其抽象数据类型定义,循环队列的插入与删除算法 11、循环队列的特征:特别是循环队列中队头与队尾指针的变化情况

算法策略:

1、 递归与分而治之的概念、算法设计思想、应用条件、基本步骤 2、 递归向菲递归的转换

3、 利用分而治之和递归策略解决问题的分治法和回溯法 4、 其他策略:分支定界、穷举、贪婪等 5、 分而治之与递归策略的类型应用:···

树:

1、 树、森林的概念,相关定义和术语,特别是树的递归定义 2、 树的性质及其应用

3、 二叉树的性质、定义,顺序、链式表示,节点数的计算 4、 二叉树中结点编号规则和对应的顺序存储结构 5、 二叉树的遍历:中序、前序、后序、层次

6、算术表达式树,以及前、中、后缀表达式的对应 7、递归树的概念

8、二叉排序树的定义、性质、建立方法

9、堆的定义,堆的建立、最小堆和最大堆的异同,向堆中插入元素、删除元素的过程,堆的向上和向下调整等操作

10、最有二叉树的定义和实现,树的带权路径长度的计算,根据若干个叶子结点的权最优二叉树的过程

排序与查找:

1、 直接顺序查找、二分查找算法

2、 插入类排序:直接插入排序、折半插入排序、链式插入排序、希尔排序(思想、过程、

时间空间复杂度)

3、 交换类排序:直接选择排序、堆排序

4、 归并类排序|:二路归并排序、自然归并排序

5、 线性时间排序:计数排序、箱子排序、链式基数排序 6、 排序的基本概念、分类、工作过程和性能分析方法

7、 每一种排序算法的设计思想、算法描述、排序过程、稳定性及三种情况下的时间、空间

复杂度分析:平均情况、最好情况、最坏情况 8、 搜索(查找)的概念;静态搜索结构 9、 基于有序顺序表的搜索

顺序搜索(顺序查找)的过程

2

折半搜索(二分查找)的过程 二叉搜索(二叉查找)的过程

对于一个给定值元素,某查找算法的平均查找长度(即查找路径上的元素数)和性能(时间和空间复杂度)

例 题

线性表部分:

已知线性表L为你大二下学期所有课程的成绩列表,试根据该列表回答以下问题: 1、 写出L的具体形式化描述;

2、 设L的存储方式为线性单链表,设计一个具有较高运行效率的算法,实现对线性表L的

就地逆置操作,分析其时间复杂度和空间复杂度,绘制在算法执行过程中L的变化情况。 3、 设L的存储方式为顺序存储表示,设计一个具有较高运行效率的算法,删除表L中所有

不及格课程的成绩,保留所有及格课程的成绩,分析其时间复杂度,绘制算法执行过程中L的变化情况。

排序与查找部分:

已知线性表L为你在大二上学期所学课程的成绩列表,完成下列所有排序算法,分析其工作思想,写出每一趟排序结束时的关键码状态:

①二路归并排序;②基数排序;③计数排序;④直接插入排序;⑤最大堆排序; ⑥最小堆排序;⑦冒泡排序;⑧直接插入排序;⑨快速排序;

利用上一题中得到的已排序的有序表L’,用二分查找算法查找与你的《信号与系统》课程的成绩相同的结点,写出查找算法,分析其时间和空间复杂度,并画出查找比较的工作过程。

树形结构部分:

已知线性表L为你在大二上学期所有课程的成绩列表,试根据该列表回答以下问题:

1、 画出按初始排序顺序输入线性表L时,所得到的二叉排序树T’;并 利用该二叉排序树

T’,查找与你的《电路理论》课程的成绩相同的结点,给出具体查找比较过程。

2、 设L为某二叉树T的顺序存储映像,请绘制这颗二叉树T,并设表示《电路理论》课程

成绩的结点为A,请回答:

① 哪些结点是结点A的兄弟?结点A的度是多少?并绘制由该二叉树所表示的森林。 ② 给出对该二叉树的进行前序、中序、后序和层次遍历而得到的访问序列。 ③ 画出将二叉树T调整为最小堆的全过程。

3、 设某系统在通信联络中采用0,1,2,3,4,5,6,7,8,9,X共11个字符来描述具体的通信内容,设

这11个字符在某通信报文中的出现次数列表即为线性表L,试为其设计赫夫曼编码,并利用的所设计的Huffman编码对你自己的身份证号进行编码,写出编码过程和结果。

堆栈和队列部分:

1、 设计求解24点问题的相关算法;

3

2、 设计算法,求解杨辉三角问题;

算法综合部分:

1、 利用分而治之策略和递归算法求解九连环和梵塔问题,并分析求解其最短的执行步数。

若有可能,请将递归算法转成改写相应的非递归算法。 2、 利用回溯搜索算法求解连连看问题。 3、 利用回溯搜索算法求解立体迷宫问题。 4、 利用分支定界算法求解迷宫最短路径问题。 5、 利用贪婪算法求解对对碰问题。

九连环问题:下环

若要将n个环全部从钢梁上取下来,需要经过下列步骤: DownLink(n){

将n-2个环全部取下; DownLink(n-2); 将第n个环取下; DownLink(n); 将n-2个环放上钢梁; UpLink(n-2);

将n-1个环全部取下。 DownLink(n-1);}

九连环问题:上环

若要将n个环全部按移动规则放上钢梁,需经过下列步骤: UpLink(n){ 将n-2个环全部放上钢梁; UpLink(n-2); 第n个环放上钢梁; UpRing(n); 将n-2个环取下; DownLink(n-2); 将n-1个环全部放上钢梁 UpLink(n-1);} 九连环问题:最短步数(计算) ······

笔试考核注意事项:

算法设计题:

① 求写出算法设计思想,否则将失分; ② 用伪C代码/C描述算法;

③ 对所设计的算法进行时间和空间复杂度分析

认真、谨慎地审题,耐心、仔细地答题,严格按题目要求完成试题!

4

2010-11-9

因篇幅问题不能全部显示,请点此查看更多更全内容