C語言 使帶頭結點的單鏈表遞增有序實現與原理

2021-10-04 18:15:10 字數 1213 閱讀 2593

實現**

利用乙個中間變數,使兩個相鄰的數值進行比較,如果前面乙個數大於後面的乙個數,進行交換,如圖:

如果a>b,首先利用value變數把a的值儲存下來,然後把b的值估值給a最後把value儲存的數值給b,完成資料交換,說白了這就是氣泡排序

此圖很形象的說明了氣泡排序的原理,大的泡泡向上冒,小的則留在下面

typedef

struct sqnode sqnode,

*sqlist;

sqlist increaseelement

(sqnode* l)

q = q->next;

}printf

("第%d趟:"

如圖可以發現當在第三趟的時候鍊錶就已經使有序的鍊錶了,咱們可以對其優化一下,新增乙個標記,如果有交換則做標記,如果正趟下來都沒有交換則視為鍊錶優序

sqlist increaseelement

(sqnode* l)

q = q->next;

}printf

("第%d趟:"

,i);

printflist

(l);

printf

("\n");

i++;if

(j==1)

//若正趟下來都沒有標記發生,則視為鍊錶優序

return l;

//返回結果

可以發現節省了很多時間,現在鍊錶節點數比較少,當鍊表長度很龐大時,節省的時間是非常可觀的

小白演算法積累 單鏈表6 帶頭結點單鏈表 遞增有序

題目 有乙個帶頭結點的單鏈表l,設計乙個演算法使其元素遞增有序。關鍵字 帶頭結點單鏈表 遞增有序 思路 採用直接插入排序演算法的思想 就是先分理出頭結點 第乙個結點組成原始新鍊錶,然後依次將後續結點摘下,根據遞增順序接入新鍊錶。1.先構成只含乙個資料結點的有序單鏈表,需要變數 l,p,pre 前驅 ...

C語言帶頭結點的單鏈表

之前的文章建立的單鏈表都是不帶頭結點的單鏈表。有時,我們為了更加方便地對鍊錶進行操作,會在單鏈表的第乙個結點前附設乙個結點,稱為頭結點。頭指標與頭結點的異同 頭指標 頭指標是指煉表中指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字。頭結點 ...

帶頭結點的單鏈表的實現(c語言)

這個程式是帶頭結點的單鏈表的實現 單鏈表鏈式儲存結構 頭指標與頭結點的異同 頭指標 1 頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標 2 無論鍊錶是否為空,頭指標均不為空 3 頭指標是鍊錶的必要元素 頭結點 1 頭結點是為了操作的統一和方便而設立的,放在第乙個元素的結點之...