用單向鍊錶表示十進位制整數,求兩個正整數的和。如,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
就是單向鍊錶的翻轉,然後進行計算,然後在翻轉,即可得出答案
public
class
main
//用單向鍊錶表示十進位制整數,求兩個正整數的和。如,1234+34=1268,注意單項鍊表的方向從前向後,不允許使用其他資料結構。
// 節點類
static
class
node
}// 翻轉鍊錶
public
static node reverse
(node node)
// 實現鍊錶反轉,我們需要從第二個節點開始遍歷,將當前節點的 next 指向前乙個節點。這裡需要注意的是,該變當前節點的 next 時,需要提前儲存 next,不然遍歷就會中斷。
// 時間複雜度 o(n);空間複雜度 o(1)。
// 第乙個節點
node pre = node;
// 第二個節點
node current = node.next;
// 第乙個節點變成最後乙個節點後,next為null
pre.next = null;
while
(current != null)
return pre;
}// 列印鍊錶
public
static
void
printlinkedlist
(node node)
doelse
node = node.next;
}while
(node !=null);}
// 構造鍊錶
public
static node createlinkedlist
(int i)
else
}return header;
}//計算的單向鍊錶求和
public
static node add
(node node1, node node2)
if(node2 != null)
// 對應位置的數字
p.next =
newnode
(sum %10)
;// 滿10進製
sum = sum /10;
p = p.next;
}return listnode.next;
}}
求兩個用鍊錶表示的整數的和
假設這些數字是正向存放的。將value以及l1和l2的data相加 int value carry if l1 null if l2 null result.data value 10 求和結果的個數 遞迴 linkedlistnode more addlists l1 null?null l1.n...
Java 對兩個用鍊錶表示的整數求和
給定兩個用鍊錶表示的整數,每個結點包含乙個數字。這些數字是反向存放的,也就是個位排在鍊錶首部。編寫函式對這兩個整數求和,並用鍊錶形式返回結果。public linkedlist addlists linkedlist l1,linkedlist l2,int carry 注意要避開空指標一場,如果兩...
1 位運算 題六 用二進位制表示十進位制小數
題目 將十進位制小數用二進位制表示,如果不能用32位小數表示,則輸出 error 思路 1.將小數乘以2,若結果大於1,則將二進位製小數字上表示1,並將結果減1 2.若結果小於1,則繼續乘以2,迴圈1,2兩步,直至結果等於0 3.若小數的位數超過34位,則輸出 error 結束迴圈。public c...