云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构与算法期末练习题(含答案)

数据结构与算法期末练习题(含答案)

  • 62 次阅读
  • 3 次下载
  • 2025/7/6 11:06:43

}

p=p->next; } }

return degree; }

六 简单应用题

1、已知一个非空二元树,其按中根和后根遍历的结果分别为: 中根:C G B A H E D J F I 后根:G B C H E J I F D A

试将这样二元树构造出来;若已知先根和后根的遍历结果,能否构造这棵二元树,为什么?

2、对于下图,画出按Kruskal(克鲁斯卡尔)算法和Prim(普里姆)算法构造最小生成树的过程。

3、画出由下面的二叉树转换成的森林。

4、用Floyed(弗洛伊徳)算法求下图每一对顶点之间的最短路径及其长度,将计算过程的中间和最后结果填入下表:

A 1 2 3 PATH 1 2 3

A 1 2 (0)(0) A 3 1 2 (1)(1) A 3 1 2 (2)(2) A 3 1 2 (3)(3) 3 PATH 1 2 3 PATH 1 2 3 PATH 1 2 3 PATH 1 2 3 5、哈夫曼树在构造时,首先进行初始化存储空间,结果如左下图,当构造完成后,请填写最后状态表,如右下图。

weight

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

5 29 7 8 14 23 3 11 -- -- -- -- -- -- -- Parent 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Lchild 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Rchild

weight

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Parent Lchild Rchild

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

6、考虑右图:

(1)从顶点A出发,求它的深度优先生成树(4分) (2)从顶点E出发,求它的广度优先生成树(4分)

(3)根据普利姆(Prim) 算法,求它的最小生成树(请画出过程) (设该图用邻接表存储结构存储,顶点的邻接点按顶点编号升序排列)(6分)

答案如下:

七 编写算法题

1、设计函数,求一个单链表中值为x的结点个数。并将结果放在头结点的data 域中。 void count1(lklist head,int x)

2、设计递归函数,求一棵二叉树的深度。 int depth (bitreptr root)

3、设计建立有向图正邻接矩阵的函数(数据输入格式自定)。 Typedef struct

{ int data[ maxsize][maxsize]; int dem,e; }sqgraph;

sqgraph crt (sqgraph g)

4、设计函数,将不带表头结点的单链表清除。

5、设计递归函数,求一棵非空的二叉树的深度。

6、设线性表A=(a1,a2,a3,…,an)以带头结点的单链表作为存储结构。编写一个函数,删去A中序号为奇数的结点。

7、试编写一个算法,能由大到小遍历一棵二元树。

8、假设二元树用左右链表示,试编写一算法,判别给定二元树是否为完全二元树?

9、利用直接插入排序的方法对一组记录按关键字从小到大的顺序排序。

10、给出一棵表示表达式的二叉树,其中运算符和运算对象都用一个字符表示,求该表达式的值。设二叉树用二叉链表表示,表达式中仅包含二元运算,函数operate(a, b, op)可求任何一种二元运算的值,其中参数op表示运算符,a和b分别表示左右两个运算对象。算法中允许直接引用函数operate (函数operate 不必定义),如果需要还允许引用栈和队列的基本操作。

11、编写算法,将一单链表逆转。要求逆转在原链表上进行,不允许重新构造一个链表(可以申明零时变量、指针)。

该链表带头节点、头节点和数据节点的结构定义如下 typedef struct LNode {

ElemType data;

Struct LNode* next; }List, LNode;

函数定义:void invert(List & L)

12、编写算法计算给定二叉树中叶结点的个数。 其中树节点定义如下

typedef struct BiTNode{ DataType data;

Struct BiTNode *LChild, * RChild; }BiTNode, *BiTree;

函数定义:CountLeaf (BiTree T, int & LeafNum)

13、写出二叉树前根遍历的递归算法

已知二叉树结点定义为: struct node{

elemtp data;

struct node *lc,*rc; );

Typedef struct node * bitreptr(指向根),*tpointer(指向一般结点); void preorder(bitreptr P) //P指向树根节点

void preorder(bitreptr P) {

If(P!=0) {

printf(P->data); preorder(P->lc); preorder(P->rc);

}

}

14、在邻接矩阵存储结构上实现图的基本操作: InsertVex(G,v)//插入顶点

Status Insert_Vex(MGraph &G, char v)//在邻接矩阵表示的图G上插入顶点v {

if(G.vexnum+1)>MAX_VERTEX_NUM return INFEASIBLE; G.vexs[++G.vexnum]=v; return OK;

搜索更多关于: 数据结构与算法期末练习题(含答案) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

} p=p->next; } } return degree; } 六 简单应用题 1、已知一个非空二元树,其按中根和后根遍历的结果分别为: 中根:C G B A H E D J F I 后根:G B C H E J I F D A 试将这样二元树构造出来;若已知先根和后根的遍历结果,能否构造这棵二元树,为什么? 2、对于下图,画出按Kruskal(克鲁斯卡尔)算法和Prim(普里姆)算法构造最小生成树的过程。 3、画出由下面的二叉树转换成的森林。 4、用Floyed(弗洛伊徳)算法求下图每一对顶点之间的最短路径及其长度,将计算过程的中间和最后结果填入下表:

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com