Я пытаюсь умножить два связанных списка, и я использовал концепцию умножения базовой математики. Подбираемый элемент списка умножил его на другие связанные элементы списка и сохранил результат в другом связанном списке. Я успешно добился этого, и правильное умножение также сохраняется в результирующем связанном списке. Но я сталкиваюсь с проблемой при добавлении связанного с результатом списка. Сумма на каждом шаге правильно рассчитана, но на последнем этапе значение мусора заменяет сумму. Пожалуйста, помогите мне, если моя логика ошибочна.Ошибка вывода в умножении двух связанных списков
int multiply(struct node *first, struct node *second)
{
struct node *ans = NULL;
struct node *head = NULL;
struct node *rev_first = NULL;
struct node *rev_second = NULL;
int i, temp, mul, ten, carry=0, sum = 0;
rev_first = reverse(first);
rev_second = reverse(second);
while(rev_first != NULL)
{
ten = 1;
sum = 0;
head = rev_second;
while(head != NULL)
{
mul = (rev_first->data) * (head->data);
carry = mul/10;
temp = mul % 10;
sum = sum + (temp * ten);
ten = ten * 10;
head = head->next;
}
push(&ans, sum);
rev_first = rev_first->next;
}
sum = 0;
head = reverse(ans);
for(mul = 1;head != NULL;(mul *= 10))
{
sum = sum + (mul * (head->data));
head = head->next;
}
return sum;
}
Вы работаете в целочисленном переполнении? Как долго связаны списки? –
просто добавил 3 цифры в связанные списки. я изменил сумму до длинной от int, но все еще ту же самую проблему. – Chetankur