1. 程式人生 > >Java單鏈表基本操作(七)--排序

Java單鏈表基本操作(七)--排序

單鏈表的插入排序比陣列麻煩,因為每次都都要從頭節點開始往後遍歷,頭節點也需要單獨處理

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; } }