<span style="font-family:Tahoma;font-size:18px;">/* 邻接表创建
*/
#include<stdio.h>
#define MaxInt 32767
#define MVnum 100
#define Status int
#define OK 1
typedef int VerTexType;
typedef int ArcType;
//对点和边的处理
typedef struct ArcNode
{
int adjvex;//顶点的编号
struct ArcNode *nextarc;//下一个边的地址;
}ArcNode;
//对顶点的处理
typedef struct VNode
{
VerTexType data;//顶点的编号
ArcNode *firstarc;//与该点相连的顶点的地址
}VNode,Adjlist[MVnum];//数组用来存放顶点
typedef struct
{
Adjlist verrtices;
int vexnum,arcnum;//顶点和边的数量
}ALGraph;
//邻接表的创建
Status CreateUDE(ALGraph &G)
{
scanf("%d%d",&G.vexnum,&G.arcnum);
int i,k,j;
for(i=0;i<G.vexnum;++i)
{
scanf("%d",&G.verrtices[i].data);
G.verrtices[i].firstarc=NULL;
}
int v1,v2;//每次输入2个了相连的顶点
for(k=0;k<G.arcnum;++k)
{
scanf("%d%d",&v1,&v2);
i=LocateVex(G,v1);
j=LocateVex(G,v2);//其实也可以不用这样处理,完全可以
//根据顶点的输入直接建立联系,这样写主要是能够解决更加复杂的关系
ArcNode *p1,*p2;
p1=new ArcNode;
p1->adjvex=j;
p1->nextarc=G.verrtices[i].firstarc;
G.verrtices[i].firstarc=p1;
p2=new ArcNode;//这里是无向图
p2->adjvex=i;
p2->nextarc=G.verrtices[j].firstarc;
G.verrtices[j].firstarc=p2;
}
return OK;
}
int main()
{
return 0;
} </span>