【问题标题】:adjacency list graph implementation in c (any libraries)c中的邻接表图实现(任何库)
【发布时间】:2011-03-16 11:59:56
【问题描述】:

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

【问题讨论】:

    标签: c graph adjacency-list traceroute


    【解决方案1】:
    #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;
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-09
        • 1970-01-01
        相关资源
        最近更新 更多