typedef struct _LNode {
float cof;
int exp;
struct _LNode* next;
} LNode,*Polynomial;
void Add (Polynomial A, Polynomial B, Polynomial &C, int la, int lb)
{
C = new LNode;
C -> next = NULL;
Polynomial cur = C;
auto a = A -> next;
auto b = B -> next;
while (a && b) {
if (a -> exp < b -> exp) {
cur -> next = a;
cur = a;
a = a -> next;
} else if (a -> exp > b -> exp) {
cur -> next = b;
cur = b;
b = b -> next;
} else {
a -> cof += b -> cof;
b = b -> next;
if (a -> cof == 0) {
cur -> next = a -> next;
a -> next = cur -> next;
} else {
cur -> next = a;
cur = a;
a = a -> next;
}
}
}
if (la > lb) cur = a;
if (la < lb) cur = b;
}
我这个add函数,就是C=A+B,只有C是引用传递的,但事实上调用这个函数后AB都变了,这是为什么呀
思路大概就是:利用cur指针在AB链表上类似“穿针引线”的操作,要是我每次新建一个tmp节点储存下来再插入到C链表,就是正确的。
这个AB参数到底是怎样传递的?要是值传递,那么它为什么会变?要是指针传递,那参数C还要引用传递的意义是什么?