單向鍊錶之兩數相加

2022-09-07 07:18:10 字數 1464 閱讀 8288

單向鍊錶是什麼?

單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。

鍊錶中的資料是以節點來表示的,每個節點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單元,指標就是連線每個節點的地 址資料。如以下結構:

let nodelist1=}}

以「結點的序列」表示線性表稱作線性鍊錶(單鏈表)

.單鏈表是鏈式訪問的結構,為找第 i 個資料元素,必須先找到第 i-1 個資料元素。

題目:兩數相加

請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。

你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。如下圖:

輸入:l1 = [2,4,3], l2 = [5,6,4]

輸出:[7,0,8]

解釋:342 + 465 = 807.

解析:1.首先我們要將陣列轉為鍊錶模式 例如:

function

array2list(arr) ,

//臨時變數,在迴圈中儲存上乙個節點

p =head,

//儲存當前節點

node ={}

for (let i = 1; i < arr.length; i++)

//將當前節點與之前節點連線

p.next =node

//p 是臨時變數,之前和 head 共同指向同乙個記憶體位址

//這裡 p 被重新賦值了,和 node 共同指向同乙個記憶體位址

//設定當前節點為之前節點

p =node

}//注意:雖然沒有對head進行操作,但由於陣列與物件的資料有共享關係,所以p值改變head即改變

return

head

}

2.將兩個陣列用 arraylist2 ()生成後

var addtwonumbers = function

(l1, l2)

else

carry = math.floor(sum / 10);

if(l1)

if(l2)

}if (carry > 0)

return

head;

};

3.執行:

let arr1=[1,2,3],arr2=[1,3,4];

arr1=arraylist2(arr1);

arr2=arraylis2t(arr2);

addtwonumbers(arr1,arr2);

//[7,5,2]

兩數相加 鍊錶

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

兩煉表數相加

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...

鍊錶兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...