針對有頭結點的鍊錶進行排序

2021-07-25 07:06:21 字數 523 閱讀 3196

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;

}

頭結點鍊錶練習

這是乙份關於頭結點鍊錶的問題 完成一些基本的煉表處理函式,包括插入,查詢,刪除,輸出等一些功能的實現 include include include linklist.h node creat list 尾插法 int insert last node head,linkdata data 頭插法 ...

無頭結點鍊錶

include include linklist.h struct node create linklist creat linklist 根據使用者輸入,建立乙個單鏈表 struct node pnew struct node malloc sizeof struct node pnew data...

鍊錶的虛擬頭結點

public class linkedlist public node e e public node override public string tostring 虛擬頭結點 private node dummyhead private int size public linkedlist 獲取...