DS博客作业06--图

1.本周学习总结

1.思维导图

DS博客作业06--图_第1张图片

2.谈谈你对图结构的认识及学习体会。

其实在学习图之前我是有点担心学不好图的,因为之前学树的时候就已经花费了我很大的心力了,而图是一种比树更复杂的结构,但真正学起来的时候却发现图比树还要容易学一点,可能是图的各种操作递归用得比较少和存储结构更容易理解一点把。

2.PTA实验作业

2.1.题目1:7-3 六度空间

2.1.1设计思路

其实就是图的广度优先遍历

定义队列q
将起始节点入队并标记此节点已遍历过
while(队列不空)
{
    p = G->adjlist[q.top()].firstarc;
    q.pop();
    n++;//记录遍历的节点数
    while(p)
    {
        如果p未遍历则将其入队,并标记
        p=p->nextarc; 
    } 
    if(当层的节点已遍历完)
    {
        h++;//遍历的层数+1
        if(h>7)break;//遍历的层数超过7则结束遍历 
    } 
} 
return s;

2.1.2代码截图

DS博客作业06--图_第2张图片
DS博客作业06--图_第3张图片

2.1.3本题PTA提交列表说明。

2.2 题目2:修建道路

2.2.1设计思路

其实就是建最小生成树,用克鲁斯卡尔算法做会简单一点

typedef struct
{
    int u;//边的起始顶点
    int v;//边的终止顶点
    int w;//边的权值
}Edge;
定义Edge数组E[MAXV],整型数组vest[MAXV] 
把边存入E中,并按升序排序
初始化数组vest
输入已存在的边并修改vest数组,每输入一次n就+1 
while(n

2.2.2代码截图

DS博客作业06--图_第4张图片
DS博客作业06--图_第5张图片

2.2.3本题PTA提交列表说明。


(其实这道题用并查集的,但我懒得改了,虽然并查集的代码也就十行左右。。。)

2.3 题目3:旅游规划

2.3.1设计思路

最短路径问题,可以用Dijkstra算法或Floyd算法解决,这里我用的是Floyd算法

初始化A和path数组
for(k=0;k

2.3.2代码截图

DS博客作业06--图_第6张图片
DS博客作业06--图_第7张图片

2.3.3本题PTA提交列表说明。


(其实这道题用Dijkstra算法来做更好,只不过Floyd算法代码比较少,所以我就用Floyd算法来做了。。。)

3.上机考试错题及处理办法

这次考试由于我对部分算法还不太熟练,解题所用的时间过长,导致最终没时间去解其余的题目

3.1.截图错题代码

考试时来不及做,交的代码是输出样例的,就不贴出来了。。。

3.2 错的原因及处理方法

6-1

DS博客作业06--图_第8张图片
(别问为什么没有7-3。。。)

你可能感兴趣的:(DS博客作业06--图)