假設這些數字是正向存放的。
/*將value以及l1和l2的data相加*/
int value = carry;
if (l1 != null)
if (l2 != null)
result.data = value % 10;/*求和結果的個數*/
/*遞迴*/
linkedlistnode more = addlists(l1==null?null:l1.next,l2==null?null:l2.next,value>=10?1:0);
result.setnext(more);
return result;}
在實現這段**時,務必注意處理乙個鍊錶比另乙個鍊錶結點少的情況。不然可能會出現指標異常。
高階
//對兩個鍊錶求和
partialsum sum=addlistshelper(l1,l2);
//如有進製,則插入鍊錶首部,否則,直接返回整個鍊錶
if(sum.carry==0)
else
}partialsum addlistshelper(linkedlistnode l1,linkedlistnode l2)
//對較小數字遞迴求和
partialsum sum=addlisthelper(l1.next,l2.next);
//將進製和當前資料相加
int val=sum.carry +l1.data+l2.data;
//插入當前數字的求和結果
linkedlistnode full_result=insertbefore(sum.sum,val%10);
//返回求和結果和進製值
sum.sum=full_result;
sum.carry=val/10;
return sum;
}//用零填充鍊錶
linkedlistnode padlist(linkedlistnode l,int padding)
return head;
}//輔助函式,將結點插入鍊錶首部
linkedlistnode insertbefore(linkedlistnode list,int data)
return node;}
Java 對兩個用鍊錶表示的整數求和
給定兩個用鍊錶表示的整數,每個結點包含乙個數字。這些數字是反向存放的,也就是個位排在鍊錶首部。編寫函式對這兩個整數求和,並用鍊錶形式返回結果。public linkedlist addlists linkedlist l1,linkedlist l2,int carry 注意要避開空指標一場,如果兩...
用單向鍊錶表示十進位制整數,求兩個正整數的和
用單向鍊錶表示十進位制整數,求兩個正整數的和。如,1234 34 1268,注意單項鍊表的方向從前向後,不允許使用其他資料結構。如下圖 正常計算 1 2 3 4 3 41 2 6 8 思路結果 4 3 2 1 4 38 6 2 1 1 2 6 8 就是單向鍊錶的翻轉,然後進行計算,然後在翻轉,即可得...
鍊錶表示的兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 一 public listnode addt...