|
3驿站币
listnode *Mult(listnode *Head_a, listnode *Head_b)
{
listnode *p,*p1,*p2,*p3,*pa, *pb,*pc,*pre,*pc1;
pa = Head_a->next;
pb = Head_b->next;
CreateNode(Head_c);
pre = Head_c;
while (pa)
{
while (pb)
{
if (NULL == (pc = (Node)malloc(sizeof(listnode))))
{
printf("开辟节点失败\n");
exit(0);
}
if (pa->exp == pb->exp)
{
pc->coef = pa->coef*pb->coef;
pc->exp = pa->exp + pb->exp;
pre->next = pc;
pre = pc;
pc->next = NULL;
}
else
{
pc->coef = pa->coef*pb->coef;
pc->exp = pa->exp;
if (NULL == (pc1 = (Node)malloc(sizeof(listnode))))
{
printf("开辟节点失败\n");
exit(0);
}
pre->next = pc;
pc->next = pc1;
pre = pc;
pc = pc1;
pc1->coef = pa->coef *pb->exp;
pc1->exp = pb->exp;
pc->next = NULL;
}
pb = pb->next;
}
pa = pa->next;
}
p = Head_c->next;
p1 = p;
p2 = p->next;
p3 = p2->next;
while (p)
{
while (p2)
{
if (p->exp == p2->exp)
{
p->coef += p2->coef;
p1->next = p3;
delete p2;
p3 = p3->next;
}
else
{
p1 = p2;
p2 = p3;
p3 = p3->next;
}
}
p = p->next;
}
return Head_c;
}
写了个链表的多项式乘法,我的想法是把两个链表的所有乘积写到另一个链表中,再来遍历第三个链表但是在遍历的过程中,p3->NULL 出错了。链表之间进行赋值,只是把指针换了,但指针指向的内存还是同一块是吗?什么时候需要为链表节点开辟空间,有点不太理解,可以指导一下吗? |
上一篇: 新手上路,用哪个VS版比较好?下一篇: 使用WinSock发送httpGET请求出错
|