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排列。
很抱歉,因為很多原因,我現在只能完成第壹部分。希望能幫到妳。