educoder数据结构与算法 图 第2关:实现图的深度优先遍历

任务描述

本关任务:实现 graph.cpp 里的函数int Graph_DepthFirst(Graph*g, int start, Edge* tree)。 注意遵守约定:编号大的先进栈。

相关知识

图 2 给出了对图 1 的无向图的存储结构图:每个顶点的名称由一个字符串描述,所有字符串的起始地址组织为一个数组,数组的起始地址为vetex;顶点的相邻关系保存在相邻矩阵中,其起始地址为adjadj[i*n+j]的值为 1 表示i号顶点到j号顶点有边,为 0 表示无边,其中n是顶点个数,ij是顶点在顶点表中的编号。 将n,vetex,adj组织成结构:

 
  1. struct Graph {
  2. int n;//顶点数
  3. char** vetex;
  4. int* adj;
  5. };

给定指向该结构的指针g,就可以对图进行操作。

深度优先遍历算法(伪代码):

 
  1. DepthFirst(Graph, start)
  2. //输入Graph是图,start是开始顶点的编号
  3. //输出:tree_edge[i]=<from,to>是遍历树的一条边
  4. //tree_edge[1..n-1]为遍历树的n-1条边
  5. //tree_edge[0].to … tree_edge[n-1].to是遍历序列
  6. PUSH(<-1,start>)
  7. k=0;
  8. while(StackNotEmpty) {
  9. <a,b>=POP;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值