當前位置:成語大全網 - 漢語詞典 - c語言:單鏈表排序有三個單鏈表程序,想知道每個句子的意思(算法)。

c語言:單鏈表排序有三個單鏈表程序,想知道每個句子的意思(算法)。

1:linklist * Inserson(linklist * L)/*函數參數是壹個鏈表的指針L,返回的也是這個指針,是壹個排序鏈表。*/

2:{

3:鏈表。接下來;/*p指向鏈表的第壹個節點。*/

4:Linklist * r;

5:Linklist * q;

6:int I;

7:int j;

8:int x;

9:int n = lengList(L);/*獲取鏈表中的節點總數,並存儲在n中..*/

10:for(I = 1;我& ltn;I++)/*這個for循環匹配23行,使P依次指向鏈表的第1個節點到倒數第二個節點。

這個很明顯:已經循環了n-1次,23行“p = p->;下壹個.*/

11: {

12:q = p->;接下來;/*讓Q指向P的下壹個節點*/

13:for(j = I+1;j & lt= n;J++)/*12行,for循環的這行和21行,讓Q依次指向P之後的節點,直到鏈表的末尾。*/

14: {

15:if(p-& gt;數據& gtq->;Data) /*看P中的數據是否大於Q中的數據*/

16: {

17:x = p->;數據;/*這三條線17、18、19是交換的兩個pq節點的數據*/

18: p->data = q-& gt;數據;/**/

19: q->數據= x;/**/

20: }

21:q = q->;接下來;

22: }

23:p = p->;接下來;

24: }

25:返回L;

26:}

下面是上面解釋的動態例子:括號裏的數據是鏈表節點,有***4個節點,標記為1234。

1(5)->2(8)->3(2)->4(7)

當I = 1:p-& gt;1(5)

當j=2時:

p->;1(5),q->2(8),如果不成立,q->;3(2)

當j=3時:

p->;1(5),q->3(2),如果持有,交換,鏈表是1(2)->;2(8)->3(5)->4(7),q->4(7)

當j=4時:

p->;1(2),q->4(7),如果不成立Q->;5(空)

當i=2時:p-& gt;2(8)

當j=3時:

p->;2(8),q->3(5),如果持有,交換,鏈表是1(2)->;2(5)->3(8)->4(7),q->4(7)

當j=4時:

p->;2(5),q->4(7),如果不成立,q->;5(空)

當i=3時:p-& gt;3(8)

當j=4時:

p->;3(8),q->4(7),如果持有,交換,鏈表是1(2)->;2(5)->3(7)->4(8),q->5(空)

至此,排序過程結束,鏈表從5827到2578排列。

很抱歉,因為很多原因,我現在只能完成第壹部分。希望能幫到妳。