鍊錶的基本排序 C語言

2021-06-09 18:49:50 字數 550 閱讀 1708

(程式都是針對有頭結點的鍊錶進行排序)

1.插入排序

需要用兩個指針對鍊錶進行遍歷,乙個指標用於標記待插入的節點(外迴圈),另乙個指標用於尋找插入位置(內迴圈)。因為需要進行節點的刪除與插入,因此對用於遍歷的兩個指標,還需要再新增兩個前驅指標。

node *insertsortlist( node *l )}}

return l;

}2.氣泡排序

比較相鄰節點,選出未排序元素中的最大數,需要用乙個尾指標由後向前遍歷鍊錶。這裡不改變鍊錶結構,而是交換節點儲存的資料。

node *bubblesort( node *l )

}tail = p;    /*p->next == tail,即把tail往前移動一位*/

}return l;

}3.選擇排序

遍歷鍊錶,每次找出乙個最小的節點,將其值與未排序節點的首個節點交換,這裡需要乙個指標標記值最小的節點。

node *selectsort( node *l )

if( small != p )

}return l;

}

C語言 鍊錶排序

最近總結了一下針對只有頭結點的單鏈表進行排序的幾個簡單的方法。交換節點 插入排序,氣泡排序,簡單選擇排序 交換資料 快速排序 include include include 節點結構 struct node typedef struct node node,list 列印函式 void printl...

C語言鍊錶的基本操作

檔名 text.cpp 完成日期 2016年4月230日 版本號 v1.0 問題描述 鍊錶的基本操作 程式輸入 無 程式輸出 見執行結果 include stdio.h include stdlib.h include string.h struct student void addstudent ...

C語言 鍊錶資料的排序

c語言使用鍊錶時,有些時候會對鍊錶中的資料進行排序。下邊介紹使用鍊錶時可用的排序方法,氣泡排序和選擇排序。此鍊錶排序僅對鍊錶中的資料進行排序,如果想進行對整個結構體的排序,也就是利用資料順序來調整節點中的資訊,需要對節點進行交換,但與此方法不同,望讀者周知。node bubblesort node ...