数据结构邻接表+图的深搜

数据结构邻接表+图的深搜


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; ivexnum; i++)

{

cout << "输入第" << i+1 << "个顶点的数据:";

cin >> G->adjlist[i].data;

G->adjlist[i].firstedge = NULL;

}

cout << "输入边的信息:" << endl;

for(k=0; karcnum; 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; ivexnum; 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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信