Java 面試題25 合併兩個排序的鍊錶

2021-09-12 14:06:07 字數 940 閱讀 5525

題目分析

假如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...