排序之基於單鏈表插入排序

2021-07-11 23:20:36 字數 525 閱讀 9554

插入排序的具體方法在上文已經介紹過,此文不再贅述。

對於陣列,可以使用索引來輕易操作上下元素,但是單鏈表則只能通過指向下一節點的元素來操作。

因此,需要兩個指標firstoutoforder(指向第乙個無序元素的節點)和lastinorder(指向最後乙個有序元素的節點)。

首先,比較firstoutoforder->data和第乙個節點的data。如果firstoutoforder>datadata那麼把firstoutoforder節點放在第乙個。否則,從第二個節點開始找firstoutoforder要插入的位置。使用兩個指標,current和trailcurrent來查詢鍊錶。trailcurrent指向current之前的那個節點。其中需要考慮一些特殊情況,空鍊錶,只有乙個節點的鍊錶或者節點firstoutoforder在正確的位置上。

void insertsort()

else

if(current!= firstoutoforder)

else

}}

單鏈表插入排序

單鏈表插入排序演算法基本思想是構建乙個新的有序煉表頭結點,並將原來的鍊錶節點依次插入到新建的有序鍊錶中。如下 include stdafx.h include using namespace std struct listnode class solution listnode tmpnext pt...

單鏈表插入排序

include include typedef int elemtype 元素的資料型別 typedef struct lnode linknode 單鏈表結點型別 尾插法建立單鏈表,細節不表 void createlistr linknode l,elemtype a,int n 輸出線性表,細節...

單鏈表插入排序

鍊錶插入排序的基本思想是 在每個物件的結點中增加乙個鏈域link。對於存放於陣列中的一組物件v 1 v 2 v n 若v 1 v 2 v i 1 已經通過鏈結指標link,按其排序碼的大小,從小到大鏈結起來 現在要插入v i i 2,3,n,則必須在前面i 1個鏈結起來的物件當中,循鏈順序檢測比較,...