2011-03-16 7 views
1

나는 10-15 개의 다른 IP 주소에서 특정 IP 주소로 traceroutes를 만드는 프로젝트를 진행 중이다. traceroutes의 대부분은 같은 목적지에가는 도중에 (홉) 어떤 일반적인 라우터를 따라갑니다. 결과 데이터가 나에게 그래프를 준다. 나는이 데이터를 표현하는 것이 가장 좋은 방법은 인접성 목록이라고 생각한다. 거기에 어떤 그래프 라이브러리의 인스턴스를 얻을 수 있고 다른 traceroute 호출을 만들 때 가장자리 (홉)를 추가 할 수있는 C 라이브러리가 있습니까?인접 목록 그래프 구현 c (모든 라이브러리)

답변

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; 
} 
0

10-15 개의 IP 주소 만 필요하면 매트릭스를 사용하지 않아도됩니다. 그렇지 않으면 각 정점을 링크 된 목록에 매핑하는 해시 테이블을 사용해보십시오. loadsfreehashimplementationsavailable입니다.