樣例
given 1->3->2->0->null, return 0->1->2->3->null
注意單鏈表插入排序和陣列插入排序的不同:陣列插入排序是從排好序的部分的最後乙個節點往前找,找到第乙個比它小的數,然後插到其後面;而單鏈表只能從前往後遍歷,找到第乙個比當前節點大的值結束,因此在遍歷已經排好序的鍊錶部分的時候,需要兩個指標,乙個指標用於往前遍歷(該指標假設為遍歷指標),乙個指標用於記錄遍歷指標指向的當前節點的前乙個節點(該指標假設為遍歷指標),這樣當遍歷指標找到第乙個比待插入節點的值大的節點的時候,就可以將待插入節點插入到記錄指標的後面。(之所以使用兩個指標,是因為單鏈表不能反指)
/**
* definition of listnode
* class listnode
* }
*/ class solution
listnode*helper=new listnode(0);
listnode*cur=head;
listnode*pre;
while(cur!=null)
cur->next=pre->next;
pre->next=cur;
cur=next;
} return helper->next;
// write your code here
} };
173 鍊錶的插入排序
4.12 真的快被這題弄瘋了。坐了好久。思路一直不清,一直死迴圈,或者是錯誤。應該將排序好的部分和未排序的部分區分出來,這樣就比較容易實現。definition for listnode.public class listnode public class solution listnode fla...
lintcode練習 173 鍊錶插入排序
用插入排序對鍊錶排序 given1 3 2 0 null,return0 1 2 3 null 實現 definition of listnode class listnode object def init self,val,next none self.val val self.next nex...
鍊錶插入排序
void insertsort list sortascount,node node else p prior next q q next p int sortwithinsetmethod list sortasdata wchar pp p data if isnum pp int i 0 i ...