#include<iostream>
using namespace std;
#define mvnum 100
typedef char vertextype;
typedef struct arcnode//边结点
{
int adjvex;//该边所指向的顶点的位置
struct arcnode* nextarc;//指向下一条边的指针
int info;//其他关于边的信息
}arcnode;
typedef struct vnode
{
vertextype data;//顶点信息
arcnode* firstarc;//指向第一条依附该顶点的边的指针
}vnode,adjlist[mvnum];//adjlist表示邻接表类型
typedef struct
{
adjlist vertices;//顶点表
int vexnum, arcnum;
}amgraph;//图的结构定义;
bool createUDG(amgraph& G)
{
cin >> G.vexnum >> G.arcnum;
for (int i = 0;i < G.vexnum;i++)//顶点表先建立
{
cin >> G.vertices[i].data;
G.vertices[i].firstarc = NULL;
}
for (int k = 0;k < G.arcnum;k++)//一共要这么多条边,头插法建立每个单链表
{
char v1, v2;
cin >> v1 >> v2;
int i = locatevex(G,v1);
int j = locatevex(G, v2);
arcnode* p1 = new arcnode;
p1->adjvex = j;
p1->nextarc = G.vertices[i].firstarc;
G.vertices[i].firstarc = p1;
arcnode* p2 = new arcnode;
p1->adjvex = i;
p1->nextarc = G.vertices[j].firstarc;
G.vertices[j].firstarc = p1;
}
return 1;
}
int locatevex(amgraph G, vertextype V)
{
for (int i = 0;i < G.vexnum;i++)
{
if (G.vertices[i].data == V)
{
return i;
}
}
return -1;
}
int main()
{
return 0;
}
图的邻接表存储表示
最新推荐文章于 2024-07-15 22:53:16 发布