單鏈表排序

2021-10-25 08:46:03 字數 1050 閱讀 1194

從大到小排序.

鍊錶帶頭結點, 鍊錶不動, 只對鍊表裡的值進行排序.

#include #include #include struct list ;

typedef struct list s_list;

typedef struct list *p_list;

void getrandomlist (p_list p, int n); // 為p隨機賦n個值

void printlist (p_list phead); // 列印phead

void del (p_list p, int pos); // 刪除p中第pos個節點

void swap (int *x, int *y); // 交換兩個變數的值

int getlength (p_list p); // 得到p的長度

void order (p_list p); // 對p進行排序

int main ()

// 引數: p為煉表頭結點, n是需要賦值的個數

void getrandomlist (p_list p, int n)

}// 引數: phead為鍊錶的頭結點

void printlist (p_list phead)

printf("---length: %d\n", length);

}// 刪除操作

// 引數: p是要刪除鍊錶的頭結點, pos是刪除的位置

void del (p_list p, int pos)

cur = pre->next;

pre->next = cur->next;

free(cur);

}void swap (int *x, int *y)

// 對鍊錶進行從大到小排序

// 引數: p要排序的鍊錶

void order (p_list p)

temp = temp->next;}}

}int getlength (p_list p)

return length;

}

單鏈表之排序單鏈表

package list public class sortedsinglylist extends singlylist 將values陣列中的所有物件按值大小插入 public sortedsinglylist t values 過載深拷貝,由單鏈表構建排序單鏈表 public sortedsi...

單鏈表排序

思路1 將鍊錶中的資料存入陣列中,使用陣列進行排序,排好後再存入鍊錶中。當然這並不是這題所要考察的。但是在實際應用中卻相當有價值。因為鍊錶中的排序演算法都比較慢,進行轉存再排序也是一種很好的方法。思路2 排序演算法有 1,插入排序 簡單插入排序,希爾排序 2,交換排序 氣泡排序,快速排序 3,選擇排...

單鏈表排序

1 歸併排序 將鍊錶拆分成兩個鍊錶,遞迴,歸併,將兩個已排序鍊錶合併 public listnode sortlist listnode head pre.next null return merge sortlist head sortlist slow public listnode merge...