173鍊錶插入排序

2021-08-03 15:54:37 字數 693 閱讀 5838

樣例

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 ...