#include <iostream>
#include <cstdio>
using namespace std;
#define MVNum 100 // 最大顶点数
typedef int NodeData;
typedef struct ArcNode{ // 定义边节点
int adjvex; // 存放边节点在表头结点组中的标号
struct ArcNode* next; // 下一个边节点
NodeData info; // 存放相应的信息
}ArcNode;
typedef struct VNode // 定义表头结点
{
ArcNode* firstarc;
NodeData info;
}VNode, *AdjList[MVNum];
typedef struct
{
AdjList vertices; // 定义了一个表头结点数组
int vexnum, arcnum;
}ALGragh;
void CreateUDG(ALGragh &g)
{
cin >> g.vexnum >> g.arcnum;
for (int i = 0; i < g.vexnum; i ++)
{
cin >> g.vertices[i].info;
g.vertices[i].firstarc = NULL;
}
for (int i = 0; i < g.arcnum; i ++)
{
int v, u, w;
int i = locate(g, v), j = locate(g, u);
ArcNode* addNode = new ArcNode; // 创建一个边节点
addNode->adjvex = j;
addNode->next = vertices[i].firstarc, vertices[i].firstarc = addNode;
addNode->info = w;
ArcNode* addnode = new ArcNode; // 创建另一个对称的边节点
addnode->adjvex = i;
addnode->next = vertices[j].firstarc, vertices[j].firstarc = addnode;
addnode->info = w;
}
}
《数据结构》图——邻接表
最新推荐文章于 2024-08-26 14:47:11 发布