鍊錶的題目總是讓我很惆悵。
動輒就會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...