Может, кто-нибудь посоветует, как решить эту проблему?
Вы составляете список, в котором хранятся ненулевые элементы матрицы.Для этого вам понадобится структура, которая определяет, как выглядит элемент такого списка:
struct sparseElement{
int n;
int m;
int value;
}
Затем вы переводите матрицу в эту разреженную форму, просматривая ее, считая ненулевые элементы.Теперь, когда вы знаете, сколько их, вы можете выделить память:
sparseElement* sparse = malloc(n * sizeof(sparseElement))
Где n
- количество ненулевых элементов.Затем вы можете заполнить список.
вычислить сумму ненулевых элементов для каждого столбца, используя язык C.
Вы просматриваете список и суммируете всеэлементы, где индекс столбца равен строке, для которой вы вычисляете сумму.Если вы хотите сделать это для всех столбцов за один раз, вы можете создать список с одной записью на столбец, а затем добавить каждый элемент в соответствующий индекс.
Конечно, это только возможная реализация.Большие, устоявшиеся библиотеки используют более сложные и эффективные структуры / алгоритмы.