第十二周 项目4 输出简单路径

本文介绍了一个C++编程项目,旨在输出图中从指定起点到终点的简单路径。通过分析代码和运行结果,理解图的遍历算法及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题及代码:

main.cpp:

/*
 *          烟台大学计算机与控制工程学院
 *文件名称:mian.cpp
 *作    者:刘磊
 *完成日期:2015年11月30日
 *版 本 号:v1.0
 *
 *问题描述: 假设图G采用邻接表存储,设计一个算法输出图G中从
             顶点u到v的一条简单路径(假设图G中从顶点u到v至少
             有一条简单路径)。

 *
 *输入描述:
 *程序输出:
 */
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
int visited[MAXV];     //定义存放节点的访问标志的全局数组
void FindAPath(ALGraph *G,int u,int v,int path[],int d)
{
    int w,i;
    ArcNode *p;
    visited[u]=1;
    d++;  //d表示path中的路径长度,初始为-1
    path[d]=u;  //路径长度d增1,顶点u加入到路径中
    if (u==v)
    {
        printf("一条简单路径为:");
        for (i=0; i<=d; i++)
            printf("%d ",path[i]);
        printf("\n");
        return;         //找到一条路径后返回
    }
    p=G->adjlist[u].firstarc;  //p指向顶点u的第一个相邻点
    while (p!=NULL)
    {
        w=p->adjvex;    //相邻点的编号为w
        if (visited[w]==0)
            FindAPath(G,w,v,path,d);
        p=p->nextarc;   //p指向顶点u的下一个相邻点
    }
}

void APath(ALGraph *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值