#include<iostream>
using namespace std;
#define MaxInt 32767
#define MaxVerTexNum 100
#define true 1
typedef int Status;
typedef int ArcType;
typedef char VerTexType;
//图的邻接矩阵存储表示
typedef struct//邻接矩阵两个表 vexs顶点表,arcs边表
{
VerTexType vexs[MaxVerTexNum];
ArcType arcs[MaxVerTexNum][MaxVerTexNum];
int arcnum, vexnum;
}AMGraph;//邻接矩阵
//找到顶点的序号
Status LocateVex(AMGraph G, VerTexType w)
{
for (int i = 0; i < G.vexnum; i++)
{
if (w == G.vexs[i])return i;
}
return -1;
}
//用邻接矩阵表示法创造无向网G
Status CreateUND(AMGraph& G)
{
cin >> G.vexnum >> G.arcnum;
for (int i = 0; i < G.vexnum; i++)
cin >> G.vexs[i];
for (int i = 0; i < G.vexnum; i++)//记得初始化邻接矩阵
for (int j = 0; j < G.vexnum; j++)
G.arcs[i][j] = MaxInt;
VerTexType v1, v2;
ArcType w;
int m, n;
for (int k = 0; k < G.arcnum; k++)
{
cin >> v1 >> v2 >> w;
m = LocateVex(G, v1);
n = LocateVex(G, v2);
G.arcs[m][n] = w;
G.arcs[n][m] = G.arcs[m][n];
}
return true;
}
bool visit[MaxVerTexNum];
void DFS(AMGraph G, VerTexType v)
{
cout << v;
int k = LocateVex(G, v);
visit[k] = true;
for (int w = 0; w < G.vexnum; w++) {
if ((G.arcs[k][w] != MaxInt) && (!visit[w]))
DFS(G, w);
}
}
int main()
{
AMGraph G;
CreateUND(G);
cout << "请输入要查找的点" << endl;
VerTexType v;
cin >> v;
DFS(G, v);
return 0;
}
该代码在cs2022中会在dfs函数中显示0x00007FF6EF873947 处有未经处理的异常(在 图.exe 中): 0xC00000FD: Stack overflow (参数: 0x0000000000000001, 0x0000004143803000)。
该如何修改