劍指offer面試17 合併兩個排序的鍊錶

2021-08-03 12:38:42 字數 1006 閱讀 6712

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

如果鍊錶1為空,將輸出鍊錶2;

如果鍊錶2為空,將輸出鍊錶1;

如果鍊錶1和鍊錶2都不為空,則比較指向鍊錶1和鍊錶2的節點值,如果指標1的節點值小於指標2的節點值,則將輸出鍊錶的指標指向指標1;反之則將輸出鍊錶的指標指向指標2;

當鍊表1再次為空時,將輸出鍊錶指向指標2;

當鍊表2再次為空時,將輸出鍊錶指向指標1;

/*

* 題目:

* 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

*/public

class test17

if(list2 == null)

listnode head = null;

//確定輸出鍊錶的頭結點

if(list1.value

< list2.value)else

listnode temp = head;

while(list1 != null && list2 != null)else

}if(list1 == null)

if(list2 == null)

return head;

}}

//遞迴實現

public listnode merge2(listnode list1,listnode list2)

if(list2 == null)

listnode head = null;

if(list1.value

< list2.value)else

return head;

}public

void

display(listnode head)

listnode temp = head;

while(temp != null)

}

劍指offer 面試題17 合併兩個排序的鍊錶

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。思路 每次從兩個鍊錶中選取較小的結點作為新鍊錶的結點,那麼這裡有兩種方法,迴圈或者遞迴。1 迴圈,每次取出兩個鍊錶中較小的結點插入新鍊錶,到達其中乙個鍊錶的尾結點時,另外乙個鍊錶的其餘部分直接接在這個尾結點上。2 從...

劍指offer之面試題17 合併兩個排序的鍊錶

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。思路 養成好習慣,一旦有鍊錶作為形參傳遞,都要對鍊錶是否為空做判斷,防止空指標異常,至於怎麼處理,稍後會講。當鍊表都不為空時,比較兩個鍊錶的頭結點值的大小,較小者作為新的頭結點儲存,不妨設較小的頭結...

劍指offer 面試題17 合併兩個排序的鍊錶

題目描述 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。例如鍊錶1,3,5,7和鍊錶2,4,6,8.合併後鍊錶為1,2,3,4,5,6,7,8 題目解析 先是判斷給出的兩個鍊錶是否是空表。然後再比較兩個表的頭結點,小的結點作為頭結點,然後兩個鍊錶依次遍歷,同時比較大小...