生活随笔
收集整理的這篇文章主要介紹了
【链表】链表变化时其中的节点变化情况
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這個點之前一直很混淆,今天碰巧看了個題,記錄一下。
對于node* p = a;此時p與a的地址一樣,那么p發(fā)生變化時a是不是也變化了呢?發(fā)現(xiàn)有兩種不一樣的情況:
如果p = p->next;此時p變化了,a沒有變化,對于p->next = b;此時p->next變化了,a->next也變化了。
例子:
struct ListNode
{int val
;ListNode
* next
;ListNode() : val(0), next(nullptr) {}ListNode(int x
) : val(x
), next(nullptr) {}ListNode(int x
, ListNode
* next
) : val(x
), next(next
) {}};
int main()
{ListNode
* p1
= new ListNode(1);ListNode
* p2
= new ListNode(2);ListNode
* p3
= new ListNode(3);ListNode
* p4
= new ListNode(4);ListNode
* p5
= new ListNode(5);p1
->next
= p2
;p2
->next
= p3
;p3
->next
= p4
;p4
->next
= p5
;p5
->next
= nullptr;ListNode
* p7
= p1
;cout
<< "before change p7:" << p7
<< "," << p1
<<endl
;p7
= p7
->next
;cout
<<"p1->val"<< p1
->val
<<"\n";cout
<< "p7->val"<<p7
->val
<<"\n";cout
<< "after change p7 p7 = p7->next;" <<"p7"<< p7
<< "," << "p1"<<p1
<<endl
;ListNode
* p8
= p1
;cout
<< "before change p8:" << p8
->next
->val
<< "p1:" << p1
->next
->val
<< endl
;p8
->next
= p4
;cout
<< "agter change p8->next = p4:" <<"p8->next->val "<< p8
->next
->val
<< " p1->next->val:" << p1
->next
->val
<< endl
;p8
= p5
;cout
<< "after p8=p5" << "p8:" << p8
<< "p1:" << p1
<< endl
;
}
可以看出來,p8本身發(fā)生變化時不會影響p1;但p8->next指向另外的節(jié)點時,p1也會跟著變化。
原因有待深究,。
總結(jié)
以上是生活随笔為你收集整理的【链表】链表变化时其中的节点变化情况的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。