如何在c++中将矩阵转换为邻接列表
How to convert a matrix into an adjencency list in c++
我有一个表示图形的数组。我想将其转换为具有i<j
的(i,j)
类型的邻接列表(因此没有双重数据)。到目前为止,我有一个问题:
- 我不知道如何访问数组并修改它,我还没有编译下面的代码,但我很确定
list[node]->..
是不正确的。
struct node {
public:
int number;
node* next;
};
class AdjList {
public:
void initialize (node* list);
void convert (bool** array, node* list);
void make (node*list, int number, int node);
private:
};
void AdjList::initialize (node* list) {
for (int i=0; i<10; i++) {
list[i]->next = NULL;
}
}
void AdjList::make(node* list, int num, int node) {
if (list[node]->next == NULL) {
node* New = new node*;
list->[node]->next = New;
New->next = NULL;
New->number = num;
}
else {
node* New = list[node];
while (New->next != NULL)
New = New->next;
node* New2 = new node*;
New->next = New2;
New2->number = num;
}
}
void AdjList::convert(bool** array, node* list) {
for (int i=0; i<10; i++) {
for (int j=i+1; j<10; j++) {
if (array[i][j] == true)
make(list, j, i);
}
}
}
int main () {
node* list[10];
}
我把这个放在这里,也许对别人会有帮助:
for (int i=0;i<bound;i++) {
for (int j=i+1;j<bound;j++) {
help = list[i];
if (Array[i][j] == true) {
help2 = new node;
if (help->next == NULL) {
help->next = help2;
help2->number = j;
help2->next = NULL;
}
else {
while (help->next != NULL)
help = help->next;
help->next = help2;
help2->next = NULL;
help2->number = j;
}
}
}
}
我是这样做的
相关文章:
- 复制列表初始化的隐式转换的等级是多少
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- std::map, std::unordered_map - 缩小初始值设定项列表中的转换范围
- 无法从"初始值设定项列表"转换为模板<int>
- 将 lambda 函数转换为具有混合 lambda 引入器和参数列表的函子结构
- 传递可变参数时在成员初始值设定项列表中强制转换
- C++中有向无环图的邻接列表到邻接矩阵的转换
- C++列表初始化允许多个用户定义的转换
- 类型映射资源并将列表转换为矢量(并返回)
- 函数获取参数的变量列表并将它们转换为一系列字节?
- 从 std::vector<double> 到 Python 列表的转换失败(提升 python)
- 在初始值设定项列表中强制转换shared_ptr
- 将 std::list of structs 转换为 Python 列表
- 标准::列表转换和复制
- 如何在逗号分开列表中解析字段并将其转换为整数
- 错误 C2440:"正在初始化":无法从"初始值设定项列表"转换为"std::vector<char *,std::分配器<_Ty>>
- 如何将任何值转换为字节数组并将其附加到字节列表
- 解析SVG转换属性的转换列表
- 最好强制转换列表中的一个元素,或者使用指向它的指针