Я пробовал умножение двух разреженных матриц с использованием связанного списка. Но эта функция не работает. После вызова функции умножения в main и вывода программы ничего не выводится.
Я думаю, что есть некоторая ошибка при пересечении связанных списков, но она не может идентифицировать ошибку.
представление Matrix в c ++
class Sparse_Matrix
{ public:
int value;
int row_position;
int column_postion;
int row;
int column;
Sparse_Matrix *next;
};
Заголовочный файл для создания нового списка и вставки.
void create_new_node(Sparse_Matrix** start, int non_zero_element,int row_index, int column_index )
Как заставить работать функцию умножения.
void Multiply()
{
int result[50][50];
int i,j;
int m=A->row; //A and B are Global Declration
int n=B->column; //They are head ptr of two linked list in which matrix is stored.
if(A->column!=B->row)
{
.
.
}
Sparse_Matrix *tempa,*tempb;
tempa=A;
tempb=B;
while(tempa->next!=NULL)
{
tempb=B;
while(tempb->next!=NULL)
{
if(tempa->row_position==tempb->column_position)
result[i][j]+=(tempa->value*tempb->value);
tempb=tempb->next;
}
tempa=tempa->next;
}
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
if (result[i][j] != 0)
{
cout<<result[i][j];
create_new_node(&Result, result[i][j], i, j);
}
PrintList(Result);
}