PAT 图的一般算法(伪代码)

##1。广度优先搜索(BFS)

bool visited[Max_vertex_num];
void BFSTraverse(Graph G) {
    for (int i = 0; i < G.vexnum; ++i)
        visited[i] = false;     // 访问数组初始化
    InitQueue(Q);
    for (int i = 0; i < G.vexnum; ++i)
    {
        if(!visited[i])
            BFS(G, i);            // 访问
    }
}

void BFS(Graph G, int v) {
    visit(v);
    visited[v] = true;
    while(!isEmpty(Q)) {
        DeQueue(Q, v);
        for (w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w))    // 检查所有邻接点
        {
            if(!visited[w]) {
                visit(v);
                visit[w] = true;;
                EnQueue(Q, w);   // 顶点w入队列
            } // if
        }// for
    }// while
}// BFS

##2。BFS求解单源最短路径问题

const int Int_max = 0x7fffffff;
void BFS_mindist(Graph G, int u) {
    for (int i = 0; i < G.vexnum; ++i)
        d[i] = Int_max;                 // 初始化初始路径长度
    visited[u] = true;
    d[u] = 0;
    EnQueue(Q, u);
    while(!isEmpty(Q)) {
        DeQueue(Q, u);                  // 队头出列
        for (w = FirstNeighbor(G, u); w >= 0; w = NextNeighbor(G, u, w))
        {
            if(!visited[w]) {           // 访问尚未访问的邻接顶点
                visited[w] = true;
                d[w] = d[u] + 1;        // 路径长度+1
                EnQueue(Q, w);          // 顶点入队
            } // if
        }// for
    }// while
}

##3。深度优先搜索(DFS)

// 递归形式
bool visited[Max_vertex_num];
void DFSTraverse(Graph G
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值