두 개의 연결된 목록을 곱하려고 노력하고 있으며 기본 수학 곱셈 개념을 사용했습니다. 다른 연결된 목록 항목을 곱한 목록 항목을 가져 와서 결과를 다른 연결된 목록에 저장했습니다. 나는 성공적으로 그것을 달성하고 곱셈은 결과로 연결된리스트에 저장된다. 하지만 결과 링크 된 목록을 추가 할 때 문제가 있습니다. 모든 단계에서 합계가 올바르게 계산되지만 마지막 단계에서 가비지 값이 합계를 대체합니다. 내 논리가 잘못되면 저를 도와주세요.두 개의 연결된 목록의 곱셈에서 출력 오류
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에서 long으로 sum을 변경했지만 여전히 동일한 문제가 발생했습니다 – Chetankur