package list;
public class sortedsinglylist> extends singlylist
/* * 將values陣列中的所有物件按值大小插入
*/public sortedsinglylist(t values)
/* * 過載深拷貝,由單鏈表構建排序單鏈表
*/public sortedsinglylist(singlylistlist)
/* * 深拷貝構造方法,這個方法和上面內容基本一致,差的就是list的型別不同,但是原理是一樣的
*/@suppresswarnings("unchecked") // 如果方法中有警告,用了這句話就沒有警告了,但是沒什麼實際叼用
public sortedsinglylist(sortedsinglylistlist)
/* * 設定節點內容,但是排序單鏈表中不支援,所以要覆蓋掉,然後丟擲異常 這裡如果不寫,就會呼叫父類的set方法,這樣你的鍊錶就不是排序的了
*/public void set(int i, t x)
/* * 原理同上,就不多說了
*/public nodeinsert(int i, t x)
/* * 這是最關鍵的地方了,順序插入節點,時間複雜度為o(n)
*/public nodeinsert(t x)
front.next = new node(x, p);
return front.next; // 返回插入節點
} /*
* 好了剩下的一些方法,都可以繼承單鏈表的方法,這裡就不再一一講述了
*/public static void main(string args)
}
單鏈表排序
思路1 將鍊錶中的資料存入陣列中,使用陣列進行排序,排好後再存入鍊錶中。當然這並不是這題所要考察的。但是在實際應用中卻相當有價值。因為鍊錶中的排序演算法都比較慢,進行轉存再排序也是一種很好的方法。思路2 排序演算法有 1,插入排序 簡單插入排序,希爾排序 2,交換排序 氣泡排序,快速排序 3,選擇排...
單鏈表排序
1 歸併排序 將鍊錶拆分成兩個鍊錶,遞迴,歸併,將兩個已排序鍊錶合併 public listnode sortlist listnode head pre.next null return merge sortlist head sortlist slow public listnode merge...
單鏈表排序
思路 sort排序函式執行一次,將鍊錶倆倆之間比較大小,比較之後,大的在後,小的在前 鍊錶節點之間只交換內容,節點不動 只有鍊錶的所有倆倆相鄰之間都是小的在前,大的在後,才返回true,否則返回false。while sort head include include include include...