前些日子面试,让写个多项式加法,写了半天也有bug,我觉得很丢脸,要多多练习写代码
多项式加法 是按照序数从高到低排序,并且指数前面参数不能小于0(自己设定的)
typedef struct node{
int value;
int n;
struct node* next;
}linknode;
linknode* add(linknode* A,linknode* B)
{
if(A == NULL) return B;
if(B == NULL) return A;
linknode* preA = A;
linknode* tmpA = A;
linknode* tmpB = B;
while(tmpA != NULL && tmpB != NULL) {
if(tmpA->n > tmpB->n) {
if(preA != A)
preA->next = tmpA;
preA = tmpA;
tmpA = preA->next;
} else if(tmpA->n == tmpB->n) {
//maybe overflow
linknode* p = tmpA;
if(preA != A)
preA->next = tmpA;
tmpA->value += tmpB->value;
preA = tmpA;
tmpA = tmpA->next;
p = tmpB ;
tmpB = tmpB->next;
free(p);
p = NULL;
} else if(tmpA->n < tmpB->n) {
if(preA != A)
preA->next = tmpB;
preA = tmpB;
tmpB = tmpB->next;
}
}
if(tmpB != NULL) {
preA->next = tmpB;
}
return A;
}