演算法題 easy 合併兩個有序鍊錶

2021-10-25 09:54:34 字數 1018 閱讀 1062

大學本科階段就對鍊錶比較頭疼,沒有理解透徹,做題目的時候就比較吃力,鍊錶有很多態別,單鏈表、雙鏈表、迴圈鍊錶和雙向鍊錶等,操作也有很多,插入、刪除和排序等,其實只要理解了節點的資料結構,問題就迎刃而解了。節點由資料和指標(next)構成,在對節點操作的過程中,會有乙個虛擬的指標(並不是節點中的next)指向節點。

分析

兩個有序鍊錶,結點都是由乙個資料和乙個next指標構成。可以先建立乙個空結點 pre,因為當完成兩個鍊錶後,prehead的指標next指向null,所以需要在最開始預設頭結點prehead,單純的物件賦值,指向pre空結點。

設定迴圈條件:兩個列表指標next指向都不為null。分別比較l1和l2結點中的資料,pre指標next指標指向較小的結點,l1虛擬指標前移,pre虛擬指標前移,直至迴圈跳出

最後某個列表已經迴圈結束,另乙個列表未迴圈完,但是有序的。所以直接將未迴圈的列表接到pre列表末尾

}// 任一為空,直接連線另一條鍊錶

if(l1 == null)

else

// pre此時的指標指向末尾null,預設的頭指標prehead 指向pre

return prehead.next;

}}

演算法題 合併兩個有序的鍊錶

題目 已知有兩個有序的單鏈表,其頭指標分別為head1和head2,實現將這兩個鍊錶合併的函式 node listmerge node head1,node head2 這個演算法很像我們排序演算法中的歸併排序,只能說 很像 因為思想是一樣的,但是這個與歸併排序還是有區別的,區別如下 1.歸併排序是...

演算法題 合併兩個有序的鍊錶

題目 已知有兩個有序的單鏈表,其頭指標分別為head1和head2,實現將這兩個鍊錶合併的函式 node listmerge node head1,node head2 這個演算法很像我們排序演算法中的歸併排序,只能說 很像 因為思想是一樣的,但是這個與歸併排序還是有區別的,區別如下 1.歸併排序是...

演算法題 合併兩個有序的鍊錶

題目 已知有兩個有序的單鏈表,其頭指標分別為head1和head2,實現將這兩個鍊錶合併的函式 node listmerge node head1,node head2 這個演算法很像我們排序演算法中的歸併排序,只能說 很像 因為思想是一樣的,但是這個與歸併排序還是有區別的,區別如下 1.歸併排序是...