yetang307

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  129 随笔 :: 0 文章 :: 1 评论 :: 2391 阅读
复制代码
#include<iostream>
using namespace std;
struct arc {
    int subscript;
    arc* next;
};
struct point {
    char data;
    arc* first;
};
struct list {
    point p[100];
    int np, na;
};
bool visited[100];
int FirstAdjVex(list L, int f)
{
    if (L.p[f].first == NULL)return -1;
    return L.p[f].first->subscript;
}
int NextAdjVex(list L, int f, int w) {
    arc* p1 = L.p[f].first;
    while (p1 != NULL) {
        if (p1->subscript == w && p1->next != NULL)
            return p1->next->subscript;
        p1 = p1->next;
    }return -1;
}
void DFS(list L, int f) {
    cout << f<<" "; visited[f] = true;
    for (int w = FirstAdjVex(L,f); w >= 0; w = NextAdjVex(L, f, w))
        if (!visited[w])
            DFS(L, w);
}
int LocateVex(list L, char c){
    for (int i = 0; i < 100; i++) {
        if (L.p[i].data == c)return i;
    }return -1;
}
void Create(list& L,int &f){
    cin >> L.np >> L.na;
    for (int i = 0; i < L.np; i++){
        visited[i] = false;
        cin >> L.p[i].data;
        L.p[i].first = NULL;
    }
    for (int k = 0; k < L.na; k++)
    {
        char n, m;
        cin >> n >> m;
        int i = LocateVex(L, n), j = LocateVex(L, m);
        arc* p1 = new arc;
        p1->subscript = j;
        p1->next = L.p[i].first;
        L.p[i].first = p1;
    } char c; cin >> c;
    f = LocateVex(L, c);
}
int main()
{
    list L; int f;Create(L, f);
    if (L.np == 0 || L.np == 1 && L.na > 1)cout << "error";
    else {
        if(LocateVex(L,f)==-1||FirstAdjVex(L,f)==-1)cout<<"error";
        else DFS(L, f);
    }
}
复制代码

 

posted on   椰糖  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示