邻接表 数组实现

#include<stdio.h>
int main()
{
    int n,m,i;
    int u[6],v[6],w[6];
    int first[5],next[6];
    //first记录每个点连接的第一边,e.g:first[u[i]]表示点u[i]能到达的第一个点
    //next[i]表示编号为i的边的下一条边的编号
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++)
        first[i]=-1;//表示现在还没有边
    for(i=1;i<=m;i++){//i表示变得编号
        scanf("%d %d %d",&u[i],&v[i],&w[i]);
        next[i]=first[u[i]];//倒序记录的,先输入的为next
        first[u[i]]=i;//后输入的为first
    }
    printf("\n\n\n");
    for(i=1;i<=n;i++){
        int k=first[i];
        while(k!=-1){
            printf("%d %d %d\n",u[k],v[k],w[k]);
            k=next[k];
        }
    }
    return 0;
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。