1、设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。
2、我们可用“破圈法”求解带权连通无向图的一棵最小代价生成树。所谓“破圈法”就是“任取一圈,去掉圈上权最大的边”,反复执行这一步骤,直到没有圈为止。请给出用“破圈法”求解给定的带权连通无向图的一棵最小代价生成树的详细算法,并用程序实现你所给出的算法。
注:圈就是回路。
3、本题应使用深度优先遍历,从主调函数进入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) /if
p=g[v].firstarc;
while (p)
if (visied[p->adjvex]==0) dfs (p->adjvex);
p=p->next;} while
visited[v]=0; num--;恢复顶点v
//dfsvoid judgeroot()
/判断有向图是否有根,有根则输出之。
static int i ;
for (i=1;i<=n;i++ 从每个顶点出发,调用dfs()各一次。
num=0; visited[1..n]=0; dfs(i);
// judgeroot
算法中打印根时,输出顶点在邻接表中的序号(下标),若要输出顶点信息,可使用g[i].vertex。
2023年安徽省数据要领高级
1 设一棵树t中边的集合为,要求用孩子兄弟表示法 二叉链表 表示出该树的存储结构并将该树转化成对应的二叉树。2 连通图的生成树包括图中的全部n个顶点和足以使图连通的n 1条边,最小生成树是边上权值之和最小的生成树。故可按权值从大到小对边进行排序,然后从大到小将边删除。每删除一条当前权值最大的边后,就...
2019安徽省数据结构考
1 线性表的链接实现有利于 a 运算。a 插入b 读元素。c 查找d 定位。2 设单链表中指针p指向结点m,若要删除m之后的结点 若存在 则需修改指针的操作为 a a p next p next next b p p next c p p next nextd p next p 3 向一个栈顶指针为...
2023年安徽省星级酒店经营数据分析
日前,安徽省统计公布了2017年三季度安徽省经济运行数据。前三季度,全省实现社会消费品零售总额8108.6亿元,同比增长11.7 其中,限额以上实现零售额3997.4亿元,增长11.2 9月份实现限额以上消费品零售总额493.6亿元,增长8.0 2017年第三季度,安徽省餐饮收入887.5亿元,与去...