Итак, это фрагмент, в котором добавление происходит после взятия двух полиномов. Последняя часть его, где я пытаюсь отобразить сумму, - это то, где я застреваю. то, что я не получаю, - это почему не должен работать цикл while. может кто-нибудь помочь ?! PS: Функции - это то, что я не мог использовать здесь. Некоторые другие ограничения из-за требований вопроса. PPS: Также я знаю, что вы можете подумать, что это очень простая программа, и поверьте мне, когда я говорю, что я знаю, что это так .. но мне действительно нужна помощь, освещая эти базовые навыки, и любая помощь вообще будет оценена по достоинству.Почему не добавляется это многочленное дополнение?
struct poly
{ int e;float c;
struct poly *next;
};
typedef struct poly node;
r = (node*)malloc(sizeof(node)); //r is a node of structure
p3 = r;
if((p3 == NULL) || (r == NULL)) { printf("insuf mem");return;}
while ((p1!=NULL) && (p2!=NULL)) {
if(p1->e == p2->e) {
r->e = p1->e;
r->c = (p1->c) + (p2->c);
p1 = p1->next;
p2 = p2->next;
r->next = (node*)malloc(sizeof(node));
r = r->next;
}
else if ((p1->e) > (p2->e)) {
r->e = p1->e;
r->c = p1->c;
p1 = p1->next;
r->next = (node*)malloc(sizeof(node));
r = r->next;
}
else {
r->e = p2->e;
r->c = p2->c;
p2 = p2->next;
r->next = (node*)malloc(sizeof(node));
r = r->next;
}
/* if((p1 == NULL)&&(p2==NULL))
r->next=NULL;
else
r = r->next;*/
}
while (p1!=NULL)
{
r->e = p1->e;
r->c = p1->c;
p1 = p1->next;
r->next = (node*)malloc(sizeof(node));
r = r->next;
/*if(p1!=NULL)
r = r->next;
else r->next=NULL;*/
}
while (p2!=NULL)
{
r->e = p2->e;
r->c = p2->c;
p2 = p2->next;
r->next = (node*)malloc(sizeof(node));
r = r->next;
/* if(p2!=NULL)
r = r->next;
else r->next=NULL;*/
}
r=NULL;
printf("\n\nThe sum is\n");
while(p3!=NULL) {
printf("%3.2f X^%d + ",p3->c,p3->e);
p3 = p3->next;
}
getch();
}
бесконечный цикл? Что gdb сказал об этом? BTW не бросает malloc() возвращаемое значение ... –
Попробуйте добавить printf («p3 =% p \ n», p3) в начало вашего заключительного цикла. Он будет печатать значение указателя p3 на каждой итерации. Вероятно, вы увидите, что в связанном списке есть цикл, и поэтому он никогда не заканчивается. –
Стена с кодом. Bleah. Тем не менее, 'free (r)' вызывает после циклов 'for' в' main() 'выглядит довольно подозрительно. –