const int MAXN=1000;
/*边节点*/
typedef struct node{
char adjvex;//邻接边端节点
int value;//权值
node *next;//后继指针
}EdgeNode;
/*表节点*/
typedef struct VertexNode{//表节点
char vertex;
int num;//邻接边的数目
EdgeNode *firstedge;//边指针
}VertexNode;
typedef VertexNode Adjlist[MAXN];
/*邻接表*/
typedef struct {
Adjlist adjlist;//表头
int n;//表中节点数
}AlGraph;
int main(){
AlGraph *G=new AlGraph;//新建一个邻接表
cin>>G->n;//输入邻接表的顶点数
for(int i=1;i<G->n;i++){
cin>>G->adjlist[i].vertex>>G->adjlist[i].num;//构件节点表
G->adjlist[i].firstedge=NULL;//节点表初始化
for(int j=1;j<=G->adjlist[i].num;j++){//输入边节点
EdgeNode *p=new EdgeNode;
EdgeNode *q;
if(j==1){
G->adjlist[i].firstedge=p;
cin>>p->adjvex>>p->value;
p->next=NULL;
q=p;//记录当前节点
}
else{
p->next=q->next;//先继承前驱节点的后继节点
q->next=p;//再连接前驱节点
cin>>p->adjvex>>p->value;//输入边节点的权值和节点
q=p;//记录当前节点
}
}
return 0;
}
数据结构---邻接表(模板)
最新推荐文章于 2021-10-05 19:03:29 发布