《数据结构》实验指导/实验七:图的存储及操作 6 gl. MatTolistO; gl. DispALGrapho infolabel. Text=操作提示:无向图的邻接表输出完毕" private void button Click(object sender, eventargs e text Box2Text=gl. DispMGrapho infolabel. Text="操作提示:无向图的邻接矩阵输出完毕"; (5)调试运行,并观察运行情况。 (6)在 GraphClass类中增加相应字段和遍历方法实现图的遍历操作,编写方法代码参考: string gstr; ∥用于输出算法执行结果 intl visited= new int[MAXV;/顶点的访问标志数组 public string DFS(int v) 返回图的深度优先遍历序列 for(i=0;i<Gn;i++) visited il=0; //visited数组元素均置为0 DFSI(V); return gstr void DESI(int v) /被DFS调用进行深度优先遍历 int w: visitedⅤl=1; 已访问标记 gstr+=v. ToString(0+"";/输出被访问顶点的编号 p= G adjlist| v .firstare;/指向顶点v的第一个邻接点 while(p!=null) if( visited w=0)若w顶点未访问递归访问它 DFSI(w); p= p. nextare 作p置为下一个邻接点 public string bFS(intv)/返回图的广度优先遍历序列 AreNode p; intl qu= new intIMAXVI: ∥定义一个循环队列 int front=0, rear=0; 循环队列队头队尾初始化 intIl visited= new intIMAXVI;∥定义存放顶点的访问标志的数组 管理科学与工程学科/共7页第6页《数据结构》实验指导 / 实验七:图的存储及操作 6 管理科学与工程学科 / 共7页,第6页 gl.MatToList(); textBox1.Text = gl.DispALGraph(); infolabel.Text = "操作提示:无向图的邻接表输出完毕"; } private void button3_Click(object sender, EventArgs e) { textBox2.Text = gl.DispMGraph(); infolabel.Text = "操作提示:无向图的邻接矩阵输出完毕"; } (5) 调试运行,并观察运行情况。 (6) 在 GraphClass 类中增加相应字段和遍历方法实现图的遍历操作,编写方法代码参考: string gstr; //用于输出算法执行结果 int[] visited = new int[MAXV]; //顶点的访问标志数组 public string DFS(int v) //返回图的深度优先遍历序列 { int i; for (i = 0; i < G.n; i++) visited[i] = 0; //visited 数组元素均置为 0 gstr = ""; DFS1(v); return gstr; } void DFS1(int v) //被 DFS 调用进行深度优先遍历 { int w; ArcNode p; visited[v] = 1; //置已访问标记 gstr += v.ToString() + " "; //输出被访问顶点的编号 p = G.adjlist[v].firstarc; //p 指向顶点 v 的第一个邻接点 while (p != null) { w = p.adjvex; if (visited[w] == 0) //若 w 顶点未访问,递归访问它 DFS1(w); p = p.nextarc; //p 置为下一个邻接点 } } public string BFS(int v) //返回图的广度优先遍历序列 { ArcNode p; int[] qu = new int[MAXV]; //定义一个循环队列 int front = 0, rear = 0; //循环队列队头队尾初始化 int[] visited = new int[MAXV]; //定义存放顶点的访问标志的数组