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...