請教下大佬 第二張圖片波浪線部分陳述句的作用是什么

uj5u.com熱心網友回復:
假設p->next--->h1 指向h1那么 s->next = p.next 后, s->next-->h1 s的next也指向h1,這點沒問題吧
然后p->next = s; 就變成了 p->next-->s p的next指向s,所以整個結果變成 p->next-->s->next-->h1
如果沒有 s->next = p.next,那么h1是不是就找不到了,因為p->next = s是的p的next拋棄了h1,指向了s,那么h1節點都沒有任何節點只想它了,h1節點豈不是丟失了嗎?所以要把h1先保留起來,那么怎么保留?就直接保留在s的next里,所以就是s->next = p.next
其實用個臨時變數,估計LZ就理解了
Node *h1 = p->next; //把p的next指向的節點h1保存
p->next = s; //然后p的next指向s
s->next = h1; //然后s的next再指向h1
這樣是不是也達到了 p->next-->s->next-->h1
所以s->next = p.next 只是省略了 Node *h1 = p->next 用臨時變數而已
uj5u.com熱心網友回復:
就是說整個鏈表就是靠p->next 這個地址連接起來的對吧 p始終是最后一個節點 p把p->next暫時放到新連接過來的s的next里面 然后自己往后移動一個單位 指向s 然后又把p->next找回來了 就是這樣回圈的對吧
uj5u.com熱心網友回復:
是為了給s->next賦值。看代碼是尾插法,即把新節點都從尾部插入,新節點的next用p->next賦值。其實,這條陳述句可以去掉,因為在回圈外有p->next = NULL;這樣保證單鏈表的末尾是NULL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/121070.html
標籤:C語言
上一篇:怎么做,我是小白
