Java單鏈表基本操作(七)--排序
阿新 • • 發佈:2018-12-31
單鏈表的插入排序比陣列麻煩,因為每次都都要從頭節點開始往後遍歷,頭節點也需要單獨處理
package listnode;
/**
* @author Gavenyeah
* @date Start_Time:2016年4月1日 下午14:07:04
* @date End_Time:2016年4月1日 下午14:55:04
*/
public class SortList {
public static void main(String[] args) {
Node head=ListNode.getSingleList();
ListNode.printList(head);
head=new SortList().insertSortList(head);
ListNode.printList(head);
}
public Node insertSortList(Node head){
Node p=head.next;
Node pre=head;
while(p!=null){
Node cur=head; //比較節點,每次都是從頭節點開始
Node q=p.next;
if(p.data<head.data){ //由於是單鏈表,每次只能從頭節點開始比較
pre.next=q;
p.next=head;
head=p;
}else
while(cur.next!=p){
if(p.data<cur.next.data){//將P與cur.next進行比較,方便單鏈表插入
pre.next=q;
p.next=cur.next;
cur.next=p;
p=pre; //保證pre每次指向的都是p前面的一個節點
}else
cur=cur.next;
}
pre=p;
p=q;
}
return head;
}
}