1

我正在做一个项目,我从 10-15 个不同的 IP 地址跟踪到某个 IP 地址。大多数跟踪路由在到达同一目的地的途中(跳跃)沿着某些常见的路由器。结果数据给了我一个图表。我认为表示这些数据的最佳方式是邻接表。是否有任何 C 库可以在其中获取此类图的实例并在进行不同的 traceroute 调用时向其添加边(跃点)?

4

2 回答 2

2
#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;
}
于 2012-03-05T21:56:04.953 回答
0

如果您只需要 10-15 个 IP 地址,则可以使用矩阵。否则,请尝试将每个顶点映射到链表的哈希表。有大量可用免费 哈希 实现

于 2011-03-16T13:32:18.130 回答