c語言連結串列排序問題,程式如下。t nextp next p nextq next q nextt next是什麼意思

2021-03-30 15:30:46 字數 1761 閱讀 5171

1樓:匿名使用者

if (p->studentid > q->studentid) //當前p的id大於q的id,則交換兩個結點資料

2樓:匿名使用者

*t = *p;  //講p賦給t

*p = *q;  //講q賦給p

*q = *t;  //講t賦給q

//上面

三行就是交換p和q的,按你程式的意思,studentid更小的在前面,大的往後放。

//其實這個迴圈就是經典的氣泡排序原理。

t->next = p->next;  //將p的下一個節點交給t的下一個節點。

p->next = q->next;  //將q的下一個節點交給p的下一個節點。

q->next = t->next;  //將t的下一個節點交給q的下一個節點。

//這是交換p和q的下一個節點,修改next值。

//結構體可以直接賦值的,也就是第一個三行交換,不僅交換了數值studentid,應該也同時交換了next指標,所以後面三行其實是還原next指標的,否則上面的for迴圈,就換亂了。簡單的做法,應該可以直接交換studentid。就不需要考慮指標連結的順序了。

t->studentid = p->studentid;

p->studentid = q->studentid;

q->studentid = t->studentid;

//直接交換值studentid

在c語言連結串列中,p=q->next和p->next=q->next有什麼區別?

3樓:匿名使用者

給你普及下指標的真諦:

假設兩個連結串列節點的記憶體地址分別為aaaa和bbbb,節點內偏移4位元組處儲存名為next的指標,

p = 0xaaaa,q=0xbbbb,這說明p和q分別指向這兩個節點。

p->next是記憶體aaae處的內容,q->next是記憶體bbbf處的內容(假設為cccc)

那麼, p = q->next 即p=0xcccc

p->next = q->next,即將記憶體aaae處的內容改為cccc

兩值意義相差甚遠。

4樓:足球隊聯絡員

我想了一個晚上,這是我的思考成果。

5樓:晚霞拉長了身影

p=q—>next的意思是把p結點接到q結點後面,p—>next=q—>next的意思是把q結點的下一個結點接到p結點後。

c語言關於連結串列操作問題 這裡q->next=p;q=p;和p->next=p一樣?

6樓:匿名使用者

一個單一的名單呢? 如果一個單獨的列表,對 - >下一個到下一個節點,對 - >下一個= q->接下來是指在q>下一個指到下一個節點米(節點q)分配到p地址 - >下一個,這是下一個節點變為熔點

c語言連結串列中p=q->next與q->next=p的區別

7樓:千尋無言

p=q->next 使p指向q->next,p的值被改變,變為q->next

q->next=p 使p的值賦給q->next,q->next的值被改變,變為p

兩者最後都指向同一地址,只是被改變的物件不同

8樓:匿名使用者

p=q->next是把q後面的連結串列連結到p的後面;

q->next=p是把p連結到q的後面;

希望好好意會。

c語言關於連結串列操作問題這裡q next p q p和p

一個單一的名單呢?如果一個單獨的列表,對 下一個到下一個節點,對 下一個 q 接下來是指在q 下一個指到下一個節點米 節點q 分配到p地址 下一個,這是下一個節點變為熔點 在c語言連結串列中,p q next和p next q next有什麼區別?給你普及下指標的真諦 假設兩個連結串列節點的記憶體地...

有關C語言資料結構單連結串列的問題,關於C語言版的資料結構問題 建立單連結串列

因為malloc 有可能出現分配空間失敗的情況,當分配失敗時,malloc 將返回null,而只有在malloc 分配成功的情況下,對為head分配的空間進行操作才有意義,if語句就是檢查head的空間有沒有分配成功,如果分配失敗,就會直接退出程式,而不會執行 head next null 我分別回...

C語言連結串列刪除的問題不知道怎麼回事連結串列刪不掉求教

include include struct node 這裡 引數要使用引用否則當刪除連結串列頭的節點時會造成錯誤 else if p return q next p next free p 該函式用於釋放整個連結串列 int main display head del head display h...