Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
邻接列表图在c中的实现(任意库)_C_Graph_Adjacency List_Traceroute - Fatal编程技术网

邻接列表图在c中的实现(任意库)

邻接列表图在c中的实现(任意库),c,graph,adjacency-list,traceroute,C,Graph,Adjacency List,Traceroute,我正在从事一个项目,在这个项目中,我将跟踪路由从10-15个不同的IP地址发送到某个IP地址。大多数跟踪路由沿着某些公共路由器(hop)到达同一目的地。结果数据给了我一个图表。我认为表示这些数据的最好方法是邻接列表。有没有任何C库可以让我获得这样一个图的实例,并在我进行不同的traceroute调用时向其添加边(跃点)?如果您只需要10-15个IP地址,您可以不用使用矩阵。否则,请尝试将每个顶点映射到链接列表的哈希表。有很多种。#包括 #包括 //c语言中用链表实现图的邻接表 结构调整节点{ 整

我正在从事一个项目,在这个项目中,我将跟踪路由从10-15个不同的IP地址发送到某个IP地址。大多数跟踪路由沿着某些公共路由器(hop)到达同一目的地。结果数据给了我一个图表。我认为表示这些数据的最好方法是邻接列表。有没有任何C库可以让我获得这样一个图的实例,并在我进行不同的traceroute调用时向其添加边(跃点)?

如果您只需要10-15个IP地址,您可以不用使用矩阵。否则,请尝试将每个顶点映射到链接列表的哈希表。有很多种。

#包括
#包括
//c语言中用链表实现图的邻接表
结构调整节点{
整数指数;
结构调整节点*下一步;
};
void makeadj(结构调整节点*nod,int调整){
结构调整节点*newadj=(结构调整节点*)malloc(sizeof(结构调整节点));
newadj->index=adj;
newadj->next=NULL;
而(nod->next!=NULL)nod=nod->next;
nod->next=newadj;
}
int main(){
int i;
结构调整节点图[4],*temp;
对于(i=0;不精确!=NULL){
printf(“%d”,临时->下一步->索引);
温度=温度->下一步;
}
返回0;
}
#include <stdio.h>
#include <stdlib.h>

// adjacency list implementation of graph using linked list in c

struct adj_node {
    int index;
    struct adj_node * next;
};

void makeadj(struct adj_node *nod,int adj) {
    struct adj_node *newadj=(struct adj_node *)malloc(sizeof(struct adj_node));
    newadj->index=adj;
    newadj->next=NULL;
    while(nod->next!=NULL)nod=nod->next;
    nod->next=newadj;
}

int main(){
    int i;
    struct adj_node graph[4],*temp;
    for(i=0;i<4;i++){
        graph[i].index=i;graph[i].next=NULL;
    }
    //example
    makeadj(&graph[0],2);
    makeadj(&graph[0],3);
    makeadj(&graph[1],2);
    makeadj(&graph[2],0);
    makeadj(&graph[2],1);
    makeadj(&graph[2],3);
    temp=&graph[2];
    while(temp->next!=NULL){
        printf("%d",temp->next->index);
        temp=temp->next;
    }
    return 0;
}