題目分析
假如list1中的頭節點是小於list2中的,那麼新的鍊錶的頭節點必將是list1的頭節點,同理對list2也一樣,那麼在比較完頭節點之後,再將list1中的下乙個節點再與list2中的頭節點比較,同樣誰小誰進入新鍊錶,然後再比較,直到兩個鍊錶比較完,故可用非遞迴或遞迴兩種方式來做。
遞迴求解:
package jianzhioffer;
/* * 面試題25:合併兩個排序的鍊錶
* 題目:輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然使遞增排序的。
*/public
class
demo25
else
return pmergedhead;
}private
static
void
printnodelist
(listnode head)
}public
static
void
main
(string[
] args)
;int
num2 =
; listnode head1 =
newlistnode()
; listnode pre1 = head1;
for(
int i=
0;ilistnode head2 =
newlistnode()
; listnode pre2 = head2;
for(
int i=
0;ilistnode merge =
merge
(head1,head2)
;printnodelist
(merge);}
}
面試題25 合併兩個排序鍊錶
題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。include include list.h using namespace std struct listnode listnode mergetwolists listnode phead1,listnode p...
面試題25 合併兩個排序的鍊錶
一 題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。例如輸入圖3.11中的鍊錶1和鍊錶2,則合併之後的公升序鍊錶如鍊錶3所示。二 關鍵 1.遞迴過程,使用遞迴函式解決。2.乙個鍊錶是空的,結果是不為空的那個。三 解釋 1.合併兩個鍊錶的過程 鍊錶1的頭結點的值小於...
面試題25 合併兩個排序的鍊錶
輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是遞增排序的。定義兩個指標,分別指向這兩個鍊錶的第乙個結點。當第乙個結點的值小於第二個結點的值時,鍊錶1的頭結點將是合併後的鍊錶的頭結點。繼續比較兩個頭結點,如果第二個結點的值小,鍊錶2的頭結點將是合併剩餘結點得到的鍊錶的頭結點。packa...