2023年12月1日发(作者:华为所有系列手机)
#include
#include
using namespace std;
#define MAX_NODE 100
//边结构体
typedef struct Edgenode{
int index;
Edgenode *next;
}Edgenode;
//顶点结构体
typedef struct{
char data;
Edgenode *firstedge;
}Vexnode, Adjlist[MAX_NODE];
//图结构体
typedef struct{
Adjlist adjlist;
int vexnum, arcnum;
}ALGraph;
int locate(ALGraph G, char data)
{
int i;
for(i=0; i<; i++)
cout << "输入顶点信息:" << endl;
for(i=0; i
{
cout << "输入第" << i+1 << "个顶点的数据:";
cin >> G->adjlist[i].data;
G->adjlist[i].firstedge = NULL;
}
cout << "输入边的信息:" << endl;
for(k=0; k
{
char v1, v2;
int index1, index2;
cout << "第" << k+1 << "条边连接顶点为(v1,v2):";
cin >> v1 >> v2;
index1 = locate(*G, v1);
index2 = locate(*G, v2);
s = new Edgenode;
s->index = index1;
s->next = G->adjlist[index2].firstedge;
G->adjlist[index2].firstedge = s;
cout << G->adjlist[s->index].data << "->";
s = s->next;
}
cout << endl;
}
}
void DFS(ALGraph G, int index, bool visited[])
{
cout << t[index].data; //输出
visited[index] = true; //已经访问过
Edgenode *s;
s = t[index].firstedge; //指向下一个节点
if(!visited[s->index])
{
DFS(G,s->index,visited);
}
}
void DFStraverse(ALGraph *G)
{
int i;
bool visited[MAX_NODE];
for(i=0; i { visited[i] = false; } for(i=0; i { if(!visited[i]) { DFS(*G,i,visited); } } } int main() { ALGraph *G = new ALGraph; create(G); print(G); DFStraverse(G); return 0; }
发布者:admin,转转请注明出处:http://www.yc00.com/num/1701383008a1075554.html
评论列表(0条)