列表矩阵

Matrix of lists

本文关键字:列表      更新时间:2023-10-16

我有两个结构

struct Edge{
        int v1;
    int v2;
        int weigt;
    Edge(int v1_tmp, int v2_tmp, int weight_tmp);
};
struct GraphList{
        int V;
    int E;
    list<Edge>* mylist;
}
GraphList::GraphList(GrafMatrix* graph){
    V=graph->V;
    E=graph->E;
    for (int i=0; i<V; i++){
        for (int j=0; j<V; j++){
            if (graph->matrix[i][j]==1) mylist[i].push_back( Edge(i+1, j+1, graf->weights[i][j]) );
        }
    }
}

怎么了?当i=0j=1时,有一个错误。我试过lista = new list<Krawedz>(),但它不起作用。什么好主意吗?

您正在解引用一个从未分配任何空间的指针。注意list<Edge>* mylist。您应该使用new作为

mylist = new list<Edge>[k];  //declare an array of k list<Edge>.

然后您将能够访问mylist[0],....mylist (k - 1) .