兩個單鏈表生成相加鍊錶

2022-09-10 09:30:14 字數 1264 閱讀 5678

題目:兩個鍊錶生成相加鍊錶

《程式設計師**面試指南》第21題 p66 難度:士

★☆☆☆

本題依舊有2種解法。不過首先說明一下,如果採用將鍊錶轉成系統中int型別的數的方法,當鍊錶過長時,int型別會溢位。我一開始就採用了這個方法,上來直接就0/20用例通過。。

然後書上第1種解法是採用的結構,將2個鍊錶分別依次push到2個棧中,然後同時從棧頂彈出,此時即從原鍊錶的末端開始。彈出的2個數相加的同時需注意進製。最後,當2個棧都為空時,還需要再注意一下上一次有沒有進製有進製則最高位為1

書中題解**如下:

public node addlists1(node head1, node head2) 

while (head2 != null)

int ca = 0;

int n1 = 0;

int n2 = 0;

int n = 0;

node node = null;

node pre = null;

while (!s1.isempty() || !s2.isempty())

if (ca == 1)

return node;

}

第2種解法和我的做法相同,就是首先將2個鍊錶反轉,然後同步遍歷兩個逆序後的鍊錶,生成相加鍊錶。

與第1種解法相同,在相加的過程中也需注意進製。同時當兩個鍊錶都遍歷完成後,還要關注進製資訊是否為1為1則還要生成乙個值為1的新節點

書中**如下:

public node addlists2(node head1, node head2) 

if (ca == 1)

reverselist(head1);

reverselist(head2);

return node;

}public node reverselist(node head)

return pre;

}

兩個單鏈表生成相加鍊錶

題目 假設鍊錶中每乙個節點的值都在0 9之間,那麼鍊錶整體就可以代表乙個整數。例如9 3 7,代表937.給定兩個這種鍊錶的頭節點head1和head2,請生成代表兩個整數相加值的結果鍊錶。例如 9 3 7和6 3,相加結果為1 0 0 0 兩個單鏈表生成相加鍊錶 方法1 利用棧結構求解 publi...

兩個單鏈表生成相加鍊錶

題目 假設鍊錶中每乙個節點的值都在0 9之間,那麼鍊錶整體就可以代表乙個整數。例如 9 3 7,可以代表整數937.給定兩個兩個這種鍊錶的頭結點head1和head2,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶1為9 3 7,鍊錶2為6 3,最後生成新的結果鍊錶為1 0 0 0。public c...

兩個鍊錶生成相加鍊錶

假設鍊錶中每乙個節點的值都在 0 9 之間,那麼鍊錶整體就可以代表乙個整數。給定兩個這種鍊錶,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶 1 為 9 3 7,鍊錶 2 為 6 3,最後生成新的結果鍊錶為 1 0 0 0。示例1 9,3,7 6,3 struct listnode class so...