前些日子面试,让写个多项式加法,写了半天也有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; }
原文:http://blog.csdn.net/shcalm/article/details/19334387