21 合併兩個有序鍊錶

2021-10-12 16:12:44 字數 1156 閱讀 9560

第一次嘗試

將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。 鍊錶為無頭結點、單向、不迴圈。(由於涉及到結構體,所以寫不了完整的測試**,下面展示的**為leetcode中寫的**)(leetcode鏈結)

//遞迴的函式

struct listnode*

function

(struct listnode* l1,

struct listnode* l2)

if(l2 ==

null

)struct listnode* node =

null;if

(l1->val < l2->val)

else

struct listnode* ret =

function

(l1, l2)

;、 //頭插法插入先前保留的結點

node->next = ret;

return node;

}struct listnode*

mergetwolists

(struct listnode* l1,

struct listnode* l2)

if(l2 ==

null

)//遞迴法

struct listnode* ret =

function

(l1, l2)

;return ret;

//雙指標法

//設定虛頭結點

struct listnode list;

list.next =

null

;//設定更新變數結點

struct listnode* node =

&list;

while

(l1 !=

null

&&l2 !=

null

)else

node = node->next;

}//最後會有乙個先空,只需將另乙個非空的接到最後面即可

node->next = l1 ==

null

? l2 : l1;

return list.next;

}

發表於 2020-12-11 21:20

21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 原本想的是用19題的結構陣列那種方法來做 分別遍歷兩個鍊錶,建立結構儲存原始索引,val和指標,氣泡排序這個結構,更新索引,按照索引建立新的n...

21 合併兩個有序鍊錶

合併兩個有序鍊錶 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4比較簡單,比較大小,重新排序即可。created by hints on 2019 1 9.include using name...

21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4先確定合併鍊錶第乙個節點 在迴圈中同時遍歷兩個鍊錶,將後面其餘節點逐次比較,依大小次序連線到首節點之後,迴圈結束後可能有乙個鍊錶未遍歷完,將這個鍊錶剩...