Отождествление в списках смежности

Даны графы, нужно с помощью списков смежности произвести отождествление вершин. С помощью матрицы смежности я это сделал, но как со списками не понятно. И нельзя просто перезаписать списки из новой матрицы. Вот функция с матрицей:

void mergeRows(int** arr, int* rows, int rows1, int rows2) {
// Проверка
if (rows1 >= *rows || rows2 >= *rows || rows1 < 0 || rows2 < 0) {
    printf("Ошибка: некорректные номера вершин!\n");
    return;
}

// Отождествляем вершины путем присвоения им одного и того же значения
for (int i = 0; i < *rows; i++) {
    arr[i][rows1] = arr[i][rows1] || arr[i][rows2];
}
for (int i = 0; i < *rows; i++) {
    arr[rows1][i] = arr[rows1][i] || arr[rows2][i];
}

// Сдвигаем вершины справа от rows2 на одну позицию влево
for (int i = 0; i < *rows - 1; i++) {
    for (int j = rows2; j < *rows - 1; j++) {
        arr[i][j] = arr[i][j + 1];
    }
}

for (int i = rows2; i < *rows - 1; i++) {
    for (int j = 0; j < *rows; j++) {
        arr[i][j] = arr[i + 1][j];
    }
}
// Уменьшаем количество вершин на 1
(*rows)--;

}

Передаётся двумерный массив, размер матрицы, первая и вторая вершина.

Списки

    typedef struct Node {
    int inf;
    struct Node* next;
}Node;
void addSp(Node** arr_sp, int** arr, int rows) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < rows; j++) {
            if (arr[i][j] == 1) {
                Node* newNode = (Node*)malloc(sizeof(Node));
                newNode->inf = j + 1;
                newNode->next = arr_sp[i];
                arr_sp[i] = newNode;
            }
        }
    }
}

void printSp(Node** arr_sp, int rows) {
    for (int i = 0; i < rows; i++) {
        Node* current = arr_sp[i];
        if (current == NULL) {

        }
        else {
            printf("Вершина %d смежна с: ", i + 1);
            while (current != NULL) {
                printf("%d ", current->inf);
                current = current->next;
            }
            printf("\n");
        }
    }
}
В main просто выделяется память и создаётся массив, но если нужно могу и его скинуть.

Ответы (0 шт):