pta 遍历时用裁判定义的函数 4-2 邻接矩阵存储图的深度优先遍历 (20分)
函数接口定义:voidDFS(MGraphGraph,VertexV,void(*Visit)(Vertex));其中MGraph是邻接矩阵存储的图,定义如下:typed...
函数接口定义:void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );其中MGraph是邻接矩阵存储的图,定义如下:typedef struct GNode *PtrToGNode;struct GNode{ int Nv; /* 顶点数 */ int Ne; /* 边数 */ WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */};typedef PtrToGNode MGraph; /* 以邻接矩阵存储的图类型 */函数DFS应从第V个顶点出发递归地深度优先遍历图Graph,遍历时用裁判定义的函数Visit访问每个顶点。当访问邻接点时,要求按序号递增的顺序。题目保证V是图中的合法顶点。裁判测试程序样例:#include <stdio.h>typedef enum {false, true} bool;#define MaxVertexNum 10 /* 最大顶点数设为10 */#define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535*/typedef int Vertex; /* 用顶点下标表示顶点,为整型 */typedef int WeightType; /* 边的权值设为整型 */typedef struct GNode *PtrToGNode;struct GNode{ int Nv; /* 顶点数 */ int Ne; /* 边数 */ WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */};typedef PtrToGNode MGraph; /* 以邻接矩阵存储的图类型 */bool Visited[MaxVertexNum]; /* 顶点的访问标记 */MGraph CreateGraph(); /* 创建图并且将Visited初始化为false;裁判实现,细节不表 */void Visit( Vertex V ){ printf(" %d", V);}void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );int main(){ MGraph G; Vertex V; G = CreateGraph(); scanf("%d", &V); printf("DFS from %d:", V); DFS(G, V, Visit); return 0;}/* 你的代码将被嵌在这里 */输入样例:给定图如下5输出样例:DFS from 5: 5 1 3 0 2 4 6
展开
展开全部
这个应该可以
//插入排序
#ifndef LIST_H
#define LIST_H
#include<iostream>
using namespace std;
template<class number>
class List
{
public:
//插入排序
#ifndef LIST_H
#define LIST_H
#include<iostream>
using namespace std;
template<class number>
class List
{
public:
追问
大神不行啊
编译器:gcc
时间限制:400ms
内存限制:64MB
代码长度限制:16kB
判题程序:系统默认
作者:DS课程组
单位:浙江大学
这是要求~
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) )
{
Visit(V);
Visited[V]=true;
for(int w=0;w<Graph->Nv;w++)
{
if((Graph->G[V][w])==1&&!Visited[w])
{
DFS(Graph,w,Visit);
}
}
}
{
Visit(V);
Visited[V]=true;
for(int w=0;w<Graph->Nv;w++)
{
if((Graph->G[V][w])==1&&!Visited[w])
{
DFS(Graph,w,Visit);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询