图节点
顶点数&边数
顶点表节点序列
顶点信息
边表头指针(指向边表节点)
边表节点
邻接点下标
权值
next域
#include<iostream>
using namespace std;
#define MAXVEX 100
typedef char VertexType;
typedef int EdgeType;
typedef struct EdgeNode{
int adjvex;
EdgeType weight;
struct EdgeNode *next;
}EdgeNode;
typedef struct VexterNode{
VertexType data;
EdgeNode *firstedge;
} VexterNode,AdjList[MAXVEX];
typedef struct{
int numNodes,numEdges;
AdjList adjList;
}GraphAdjList;
void CreateALGraph(GraphAdjList *Gp){
int i,j,k;
EdgeNode *pe;
cout << "输入顶点数和边数(空格分隔):" << endl;
cin >> Gp->numNodes >> Gp->numEdges;
for(i = 0;i<Gp->numNodes;i++){
cout << "输入顶点信息:" << endl;
cin >> Gp->adjList[i].data;
Gp->adjList[i].firstedge = NULL;
}
for(k = 0;k < Gp->numEdges; k++){
cout << "输入边(vi,vj)的顶点序号i,j(空格分隔):" << endl;
cin>> i >> j;
pe = (EdgeNode *)malloc( sizeof(EdgeNode));
pe->adjvex = j;
pe->next = Gp->adjList[i].firstedge;
Gp->adjList[i].firstedge = pe;
pe = (EdgeNode *)malloc( sizeof(EdgeNode));
pe->adjvex = i;
pe->next = Gp->adjList[j].firstedge
Gp->adjList[j].firstedge = pe;
}
}
int main(){
GraphAdjList GL;
CreateALGraph(&GL);
return 0;
}