я уже rappresented моей разреженной матрицы в той форме, используя C языка:матричного произведения между связным списком разреженной матрицей
typedef struct node
{
int column;
int value;
int row;
struct node *next;
} element;
У меня есть функция вставки, которые добавляют элемент в матрице, вот декларация:
void Insert(element *x[], int row, int column, int value)
мой вопрос: как я могу реализовать функцию, которая вычислить продукт между двумя разреженной матрицы в таком виде?
вот мой предварительный:
void dotProduct(element * ptrA , element * ptrB) {
element* initB = ptrB;
int sum = 0;
while(ptrA!=NULL) {
ptrB = initB;
int column, int row;
while(ptrB!=NULL) {
if(ptrA->row == ptrB->column) {
column = ptrb->column;
sum = sum + ptra->value*ptrB->value;
row = ptrA->row;
}
ptrB = ptr->next;
}
ptrA = ptrA->next;
}
insert(row, column, sum)
}
Помогло бы узнать, были ли элементы в определенном порядке. – Veltas
нет, не в определенном порядке – userfi
Это плохой подход. Вы должны связывать узлы в направлениях X и Y. И форматируйте свой код лучше. Пробелы - это не только отступы. – Olaf