合併兩個有序鍊錶

2021-06-27 05:30:25 字數 1148 閱讀 9846

鍊錶的題目總是讓我很惆悵。

動輒就會runtime error。

比如這題,額外用了乙個節點的空間來儲存頭節點。我很不情願多用這個空間,不過貌似不行。(貌似不行,實際可行,見附錄。把頭節點提出迴圈)

實現類:

class solution 

else

}if(l1!=null)

p->next=l1;

if(l2!=null)

};

測試類:

#include using namespace std;

struct listnode

};listnode *reverse(listnode *root)

return p;

} listnode *mergetwolists(listnode *l1, listnode *l2)

else

}if(l1!=null)

int main() //cout<>num;

p=new listnode(num);

p->next=q;

q=p;

}//coutnext;}

return 0;

}

因為是按頭插法構建鍊錶的,所以構建完時要reverse一下。不喜尾插法,要多用乙個空間,且看這彆扭。

附錄:(簡潔且無dummy head)

listnode *mergetwolists(listnode *l1, listnode *l2) 

else

listnode* p = head; // pointer to form new list

// i use && to remove extra if from the loop

while(l1 && l2)

else

p=p->next;

}// add the rest of the tail, done!

if(l1) p->next=l1;

else p->next=l2;

return head;

}

合併兩個有序鍊錶

三個指標乙個儲存la鍊錶 乙個儲存lb鍊錶,乙個指向新的鍊錶。鍊錶的插入,兩個指標,乙個是head,乙個指向head後面的鏈,新插入的元素位於head後面。執行該 自己外加上class類。static class node public static void main string args st...

合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4思路 很簡單就是二路歸併的思想,時間複雜度o n definition for singly linked list.struct listno...

合併兩個有序鍊錶

先考慮鍊錶其中乙個為空的情況 if not l1 return l2 if not l2 return l1 curnode1 l1 curnode2 l2 先選出第乙個節點 if curnode1.val curnode2.val head curnode1 curnode1 curnode1.n...