1樓:德克and德華
問等號兩邊互換這種問題還真少見。。一般見的也就是某兩句的位置能否互換
s->next=p->next;/*新結點指標域指向p的後繼結點*/
不能互換。你可以看到這句語句的上隔上一個語句s=(linklist)malloc(sizeof(lnode)),它是新malloc出來的,s裡面的東西都是「垃圾值」,你如果把s的指標域(垃圾值)賦給p的指標域有什麼意義?
p->next=s;/*新結點成為p的後繼結點*/
不能互換。如果有s=p->next,結合上一句s->next=p->next;/*新結點指標域指向p的後繼結點*/,這時,s居然等於s的指標域,讓人有點凌亂。
q=p->next; /* q指向p的後繼結點*/
不能互換。q可以理解為一個」臨時「的指標變數,用它來暫時指向p的下一個結點(即那個將被刪除的結點)的資料,好讓p可以直接指向它的再下一個節點,如果沒有這個q,當p指向它的再下一個結點後,即將被刪除那個結點將無處可尋。q一開始也是個「垃圾值」,把一個垃圾值賦給p的指標域沒意義。
p->next=q->next;/*q的後繼結點成為p的後繼結點*/
還是不能互換。這時的q指向的已經是p的下一個結點,這是一個將被刪除的結點,如果你把p->next賦給這個將被刪除的結點的指標域,那麼這個結點刪除後,你的p結點將無處可尋,你的連結串列也被你搞斷了。
2樓:匿名使用者
這個問題其實很簡單,能不能互換,要看情況。
單向連結串列,插入節點,其實就是先讓新的節點的next執行插入點的後一個,在讓插入位置的next執行插入的節點的指標。
如果反了順序,你想一下後果吧,那就是後面的節點丟失了,因為沒有儲存p->next,就改變了,但是新節點沒有接上後面的節點。
雙向連結串列繁瑣,但是基本的思路還是那樣。先接上next,在吧前面的節點指向這個新節點
DELPHI中的連結串列問題,刪除節點的時候我把上指標移到下節點頭,跳過的那個節點的記憶體怎麼釋放謝謝
先用一個指標標記要釋放的那個節點,然後把前後兩個節點連結,最後釋放指標指向的這個節點。舉個例子,假設head是連結串列頭,現在要刪除連結串列中的第i個節點 type pnode tnode tnode record data integer next pnode end procedure dele...
c語言關於刪除指定節點的問題,刪除第i個節點
void deletenode int i,struct nu head 上面是正確 因為p開始指向頭節點,也就是第一個節點,那麼移動一次,p指向是第二個節點 所以你的 k 0,1,2,i 1,移動了i 1次,p已經指向第i個節點了,而不是指向i 1個節點。並且是在執行完成 後,再移動位置,k再加1...
關於多節點的CAN匯流排的幾個問題
1 是can匯流排自動仲裁的。2 同步這些也是can控制器硬體完成的。可以多參考can匯流排的協議和技術資料。can匯流排通訊中,如果是多節點通訊。多通訊中遇到了問題。問題在補充中 50 首先,can匯流排不分主機,最多是整車廠在網路規劃的時候定義了一個功能比較多的節點,各家車廠不一樣 如閘道器 或...