杭电数据结构c语言版本.docx

上传人:b****0 文档编号:305738 上传时间:2022-10-08 格式:DOCX 页数:33 大小:120.59KB
下载 相关 举报
杭电数据结构c语言版本.docx_第1页
第1页 / 共33页
杭电数据结构c语言版本.docx_第2页
第2页 / 共33页
杭电数据结构c语言版本.docx_第3页
第3页 / 共33页
杭电数据结构c语言版本.docx_第4页
第4页 / 共33页
杭电数据结构c语言版本.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

杭电数据结构c语言版本.docx

《杭电数据结构c语言版本.docx》由会员分享,可在线阅读,更多相关《杭电数据结构c语言版本.docx(33页珍藏版)》请在冰豆网上搜索。

杭电数据结构c语言版本.docx

杭电数据结构c语言版本

数据结构复习提纲

(附:

期末复习题及期末样卷)

第一章绪论

一.基本概念和术语

  数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。

术语:

数据、数据元素、数据对象、数据结构、抽象数据类型、算法。

数据结构的形式定义(二元组)

数据的逻辑结构:

线性结构非线性结构

数据的存储结构(物理结构):

主要有顺序存储结构链式存储结构

抽象数据类型(三元组)

算法(5个重要特性)

二.算法的时间复杂度和空间复杂度

算法的评价:

正确性、可读性、健壮性、高效率、低存储量

第二章线性表

一.线性表的定义

线性结构的特点

二.线性表的存储结构

1.顺序存储结构(顺序表)插入/删除元素时,需移动元素

2.链式存储结构(链表,分为单向链表、双向链表)

带头结点的链表和不带头结点的链表;

循环链表;

链表空与非空的情况。

3.两种存储结构的优缺点比较,各适合那些场合。

三.线性表操作的实现(算法描述)

插入元素、删除元素、查找、判表是否满足某种特性

例:

判断题:

1.线性表的逻辑顺序与存储顺序总是一致的。

F

2.线性结构的基本特征是:

每个结点有且仅有一个直接前驱和一个直接后继。

F

3.线性表的链式存储结构优于顺序存储结构。

F

选择题:

线性表L在(B)情况下适于使用链表结构实现。

A.不需修改L的结构B.需不断对L进行删除、插入

C.需经常修改L中结点值D.L中含有大量结点

填空题:

1.对于顺序表中,在第i个元素前插入一个元素需移动n-i+1个元素,要删除第i个元素,需移动n-i个元素。

2.在双向循环链表中某结点(由指针p指示)之后插入s指针所指结点的操作是:

;;;;。

第三章栈和队列

一.栈

1.栈的定义

2.栈的存储结构:

顺序存储结构链式存储结构

3.栈的应用:

二叉树的先序、中序、后序遍历算法图的深度优先遍历算法

(将递归算法改写为非递归算法可借助栈来完成;

递归算法的执行需用栈来实现)

二.队列

1.队列的定义

2.队列的存储结构:

顺序存储结构(循环队列),链式存储结构

3.队列的应用:

二叉树层序遍历图的广度优先遍历算法

4.循环队列:

·队空、队满的判断条件

·求队列的长度

·循环队列通常用front和rear来指示队头和队尾的位置来表示一个队列;如果用front指示队头,用length表示队列的长度,也可以表示一个队列。

相应的有关操作怎样实现?

例:

判断题:

因为栈是特殊的线性表,所以对线性表的所有操作都可以用于对栈操作。

填空题:

循环队列队满的条件是rear->front。

第四章串

一.串的定义

二.串的术语:

长度、子串

三.串的基本操作:

求串的长度、求子串、串联接、串替换、串匹配(子串定位)

例:

已知下列字符串:

a='THIS',b=''(一个空格),c='GOOD',d='NE',f='ASAMPLE',

执行如下操作:

s=Concat(a,Concat(Concat(b,SubString(a,3,2)),SubString(f,2,SubLength(f))));

t=Replace(f,SubString(f,3,6),c);

u=Concat(SubString(c,3,1),d);

v=Concat(s,Concat(b,Concat(t,Concat(b,u))));

试问:

s,t,u,v,LENGTH(s)各是什么?

第五章数组和广义表

一.数组数组的顺序存储:

行主顺序法,列主顺序法。

元素存储地址计算

特殊矩阵的压缩存储元素存储地址计算

二.广义表1.广义表的概念:

广义表,长度,深度,表头,表尾;

2.广义表的头尾链表存储结构

第六章树和二叉树

一.树、二叉树的定义

二.二叉树

1.二叉树的性质(5条)

2.二叉树的存储结构:

顺序存储结构(按层序存放)

链式存储结构(二叉链表、三叉链表)(空指针域的个数)

3.遍历二叉树:

先序、中序、后序、层序

应用:

给定二叉树的先序和中序(或后序和中序)序列,画出相应的二叉树

4.线索二叉树:

先序、中序、后序线索化

三.树和森林

1.树的存储结构:

双亲表示法孩子表示法孩子-兄弟(二叉树)表示法

2.树(森林)与二叉树的相互转换

3.树的遍历:

先根、后根次序遍历

4.森林的遍历:

先序、中序遍历

四.赫夫曼树及其应用

1.最优二叉树(赫夫曼树),求WPL

2.赫夫曼编码

五.各种二叉树概念的区分

1.满二叉树

2.完全二叉树

3.正则二叉树(严格二叉树)

4.最优二叉树

5.(折半查找的)判定树

6.二叉排序树

7.平衡二叉树

8.堆

六.二叉树有关的递归算法

例:

判断题:

1.已知二叉树的先序序列和后序序列并不能唯一地确定这棵二叉树,因为不知道二叉树的根结点是哪一个。

f

2.一般二叉树的第i层上有2i-1个结点,深度为k的二叉树有2k-1个结点。

f

选择题:

1.下列二叉树中,(a)可用于实现符号不等长高效编码。

A.最优二叉树B.二叉查找树C.平衡二叉树D.二叉排序树

2.结点数为n的二叉树高度至多为(b)。

A.不定B.nC.log2n+1D.log2n

填空题:

1.将满二叉树(含n个结点)中各结点从上到下,从左到右进行编号,并采用顺序存储表示,则编号为i的结点,其双亲编号为i/2,其左孩子编号为2i(2i>n),其右孩子编号为2i+1(2i+1>n)。

2.对树的遍历有先根次序遍历树和后根次序遍历树。

若以二叉链表作树的存储结构,则树的先根遍历可借用二叉树的先序遍历算法来实现,而树的后根遍历可借用二叉树的中序遍历算法来实现。

应用题:

1.已知某二叉树的先序遍历序列是ABCDEFGHI,中序遍历序列是BDCEAGHFI,画出该二叉树。

2.以数据集(4,5,6,7,10,12,18)为叶结点权值,构造一棵赫夫曼树,并求其带权路径长度。

第七章图

一.图的定义和术语

无向图、有向图、(无向/有向)完全图、子图、(强)连通图、(强)连通分量、生成树

二.图的存储结构

无向图:

邻接矩阵、邻接表、邻接多重表

有向图:

邻接矩阵、邻接表、逆邻接表、十字链表

三.图的遍历(针对具体的存储结构进行)

深度优先搜索遍历图(利用栈)广度优先搜索遍历图(利用队列)

四.图的遍历的应用求无向图的连通分量、生成树(生成森林)

五.图的应用

求最小生成树(无向网):

Prim算法、Kruskal算法

拓扑排序(AOV-网)

关键路径(AOE-网)概念

最短路径:

Dijkstra算法

例:

判断题:

一个连通图的连通分量是包含该图中的所有(n个)顶点和任意n-1条边的子图。

f

应用题:

已知图G如下,画出该有向图的邻接矩阵和邻接表,并根据你的邻接表分别写出深度优先遍历和广度优先遍历的顶点序列。

 

A

BC

DE

第九章查找

一.静态查找表

1.顺序查找表(设置岗哨)

2.有序查找表(折半/二分查找)要求:

元素值有序的顺序表

3.索引顺序查找表

二.动态查找表

1.二叉排序树(二叉查找树)

定义、查找、插入、删除

从空树开始创建一棵二叉排序树

2.平衡二叉树

定义、查找、插入

从空树开始创建一棵平衡的二叉排序树

3.n个元素的二叉排序树、平衡二叉树的深度

4.B-树(B+树)(常用于文件系统)定义、查找、插入、删除从空树开始创建一棵3阶B-树(2-3树)

三.哈希表

1.哈希表的定义

2.哈希函数的构造方法

3.处理冲突的方法

4.哈希表的造表、查找

四.平均查找长度的计算

1.等概率情况下,查找成功时的平均查找长度ASL

2.查找不成功时的查找长度

例:

判断题:

1.任一个二叉排序树的平均查找长度都小于用顺序查找法查找同样结点的线性表的平均查找长度。

2.当二叉排序树是一棵平衡树时,其平均查找长度为O(log2n)。

选择题:

1.折半查找算法要求被查找的表是(c)。

A.键值有序的链表   B.键值不一定有序的链表

C.键值有序的顺序表   D.键值不一定有序的顺序表

2.若查找表是一个有序的单链表,则应采用(a)方法。

A.顺序查找B.折半查找C.分块查找D.哈希查找

3.设线性表中元素的关键字序列为(8,16,24,29,35,40,46,58,66,73,87,98),用折半查找法查关键字等于87的元素时,需依次比较关键字(c)。

A.40,58,87B.46,87C.40,66,87D.46,66,87

应用题:

1.已知如下所示长度为8的表:

(12,71,36,45,47,50,2,9),按表中元素顺序构造一棵平衡的二叉排序树,请画出该树。

(二叉排序树,2-3树)

2.设哈希表长为16,哈希函数为H(key)=keymod13,用开放定址法的二次探测再散列处理冲突。

依次存入10个元素:

17,24,36,21,83,96,13,34,57,46,请画出它们在表中的分布情形。

第一十章内部排序

一.内部排序的方法

1.直接插入排序

2.希尔排序

3.起泡排序

4.快速排序

5.简单选择排序

6.堆排序

7.归并排序

8.基数排序

二.各种内部排序方法的比较

(最好、最坏、平均)时间复杂度平均空间复杂度

例:

判断题:

归并排序和堆排序的平均时间和最坏情况下的时间性能都是O(nlogn),因此,它们在最坏情况下的时间性能比快速排序好。

应用题:

若要按升序对关键字序列(36,45,85,16,23,16,58,22,59,74,12,46)进行排序,请写出:

(1).堆排序初始建堆(大顶堆)的结果;

(2).以第一个元素为枢轴的快速排序一趟扫描的结果;

(3).起泡排序第一趟的结果;

(4).希尔排序第一趟(增量5)的结果

(5).基数排序第一趟的结果。

附录:

期末复习题

一.是非题(共分,每题分)

1.数据结构可用三元式表示(D,S,P)。

其中:

D是数据对象,S是D上的关系,P是对

D的基本操作集。

(f)

2简单地说,数据结构是带有结构的数据元素的集合。

(t)

3判断带头结点的非空循环单链表(头指针为L)中指针p所指结点是最后一个元素结点

的条件是:

p->next==L。

(t)

4线性表的链式存储结构具有可直接存取表中任一元素的优点。

(f)

5线性表的顺序存储结构优于链式存储结构。

(f)

6.在单链表P指针所指结点之后插入S结点的操作是:

P->next=S;S->next=P->next;。

(f)

7对于插入、删除而言,线性表的链式存储优于顺序存储。

(t)

8.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

(f)

9.栈和队列是操作上受限制的线性表。

(t)

10.队列是与线性表完全不同的一种数据结构。

(f)

11.队列是一种操作受限的线性表,凡对数据元素的操作仅限一端进行。

(f)

12.栈和队列也是线性表。

如果需要,可对它们中的任一元素进行操作。

(f)

13.栈是限定仅在表头进行插入和表尾进行删除运算的线性表。

(f)

14.二叉树中每个结点有两个子结点,而对一般的树,则无此限制,所以,二叉树是树的

特殊情形。

(f)

15二叉树是一棵结点的度最大为二的树。

(f)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1