2024年浙江省数据库入门基础

发布 2023-12-23 17:00:09 阅读 5491

1、设指针变量p指向双向链表中结点a,指针变量q指向被插入结点b,要求给出在结点a的后面插入结点b的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。2、本题应使用深度优先遍历,从主调函数进入dfs(v)时,开始记数,若退出dfs()前,已访问完有向图的全部顶点(设为n个),则有向图有根,v为根结点。将n个顶点从1到n编号,各调用一次dfs()过程,就可以求出全部的根结点。

题中有向图的邻接表存储结构、记顶点个数的变量、以及访问标记数组等均设计为全局变量。建立有向图g的邻接表存储结构参见上面第2题,这里只给出判断有向图是否有根的算法。

int num=0,visited=0 //num记访问顶点个数,访问数组visited初始化。const n=用户定义的顶点数;

adjlist g用邻接表作存储结构的有向图g。void dfs(v)

visited [v]=1; num++;访问的顶点数+1

if (num==n) /ifp=g[v].firstarc;while (p)

if (visied[p->adjvex]==0) dfs (p->adjvex);p=p->next;} while

visited[v]=0; num--;恢复顶点v}//dfs

void judgeroot()

/判断有向图是否有根,有根则输出之。

// judgeroot

算法中打印根时,输出顶点在邻接表中的序号(下标),若要输出顶点信息,可使用g[i].vertex。

3、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表指针。分析你的算法的时、空复杂度。

2024年浙江省数据库入门基础

1 设指针变量p指向双向链表中结点a,指针变量q指向被插入结点b,要求给出在结点a的后面插入结点b的操作序列 设双向链表中结点的两个指针域分别为llink和rlink 2 本题应使用深度优先遍历,从主调函数进入dfs v 时 开始记数,若退出dfs 前,已访问完有向图的全部顶点 设为n个 则有向图有...

2024年陕西省数据库入门加强

1 设t是一棵满二叉树,编写一个将t的先序遍历序列转换为后序遍历序列的递归算法。2 已知有向图g v,e 其中v e 写出g的拓扑排序的结果。g拓扑排序的结果是 v1 v2 v4 v3 v5 v6 v7 3 设有两个集合a和集合b,要求设计生成集合c a b的算法,其中集合a b和c用链式存储结构表...

2024年江西省数据库入门高级

1 请编写一个判别给定二叉树是否为二叉排序树的算法,设二叉树用llink rlink法存储。2 设有一组初始记录关键字为 45,80,48,40,22,78 要求构造一棵二叉排序树并给出构造过程。3 连通图的生成树包括图中的全部n个顶点和足以使图连通的n 1条边,最小生成树是边上权值之和最小的生成树...