1、编程实现单链表的就地逆置。
23.在数组a[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个。
2、题目中要求矩阵两行元素的平均值按递增顺序排序,由于每行元素个数相等,按平均值排列与按每行元素之和排列是一个意思。所以应先求出各行元素之和,放入一维数组中,然后选择一种排序方法,对该数组进行排序,注意在排序时若有元素移动,则与之相应的行中各元素也必须做相应变动。
void translation(float *matrix,int n)
/本算法对n×n的矩阵matrix,通过行变换,使其各行元素的平均值按递增排列。
sum=p[i]; p[i]=p[k]; p[k]=sum; /交换一维数组中元素之和。}/if}//for i
free(p); 释放p数组。}/translation
算法分析]算法中使用选择法排序,比较次数较多,但数据交换(移动)较少。若用其它排序方法,虽可减少比较次数,但数据移动会增多。算法时间复杂度为o(n2).
3、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表指针。分析你的算法的时、空复杂度。
4、给定n个村庄之间的交通图,若村庄i和j之间有道路,则将顶点i和j用边连接,边上的wij表示这条道路的长度,现在要从这n个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院的路程最短?试设计一个解答上述问题的算法,并应用该算法解答如图所示的实例。20分void hospital(adjmatrix w,int n)
/在以邻接带权矩阵表示的n个村庄中,求医院建在何处,使离医院最远的村庄到医院的路径最短。
for (k=1;k<=n;k++)求任意两顶点间的最短路径for (i=1;i<=n;i++)for (j=1;j<=n;j++)
if (w[i][k]+w[k][j]for (j=1;j<=n;j++)求从某村庄i(1<=i<=n)到其它村庄的最长路径。if (w[i][j]>s) s=w[i][j];
if (s<=m) /在最长路径中,取最短的一条。m记最长路径,k记出发顶点的下标。
printf(“医院应建在%d村庄,到医院距离为%d”,i,m);}for}//算法结束。
对以上实例模拟的过程略。各行中最大数依次是9,9,6,7,9,9。这几个最大数中最小者为6,故医院应建在第三个村庄中,离医院最远的村庄到医院的距离是6。
1、对图1所示的连通网g,请用prim算法构造其最小生成树(每选取一条边画一个图)。
5、二路插入排序是将待排关键字序列r[1..n]中关键字分二路分别按序插入到辅助向量d[1..n]前半部和后半部(注:
向量d可视为循环表),其原则为,先将r[l]赋给d[1],再从r[2]记录开始分二路插入。编写实现二路插入排序算法。6、编程实现单链表的就地逆置。
23.在数组a[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个。
2019湖北省数据简介高级
1 编程实现单链表的就地逆置。23 在数组 a 1.n 中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个。2 题目中要求矩阵两行元素的平均值按递增顺序排序,由于每行元素个数相等,按平均值排列与按每行元素之和排列是一个意思。所以应先求出各行...
2019湖北省数据简介加强
h linkedlist malloc sizeof lnode 申请结点。h next h 形成空循环链表。for i 0 i pre h p h next while p h p data pre p p p next 查找a i 的插入位置。if p h p data a i重复数据不再输入。...
2023年湖北省数据总结高级
i 不论a i 是 i 或 o 指针i均后移。if j k else 算法结束。4 设有一组初始记录关键字为 45,80,48,40,22,78 要求构造一棵二叉排序树并给出构造过程。5 有一种简单的排序算法,叫做计数排序 count sorting 这种排序算法对一个待排序的表 用数组表示 进行排...