鍊錶 鍊錶變化時其中的節點變化情況

2021-10-20 22:45:28 字數 493 閱讀 9802

這個點之前一直很混淆,今天碰巧看了個題,記錄一下。

對於node* p = a;此時p與a的位址一樣,那麼p發生變化時a是不是也變化了呢?發現有兩種不一樣的情況:

如果p = p->next;此時p變化了,a沒有變化,對於p->next = b;此時p->next變化了,a->next也變化了。

例子:

struct listnode 

listnode

(int x)

:val

(x),

next

(nullptr

)listnode

(int x, listnode* next)

:val

(x),

next

(next)};

intmain()

可以看出來,p8本身發生變化時不會影響p1;但p8->next指向另外的節點時,p1也會跟著變化。

原因有待深究,。

鍊錶 刪除鍊錶的節點

劍指offer的乙個題,題目是要求在最少的時間內刪除鍊錶的節點。問題分析 對於鍊錶的刪除,按照劍指offer的一貫思路就是展開討論 1 空鍊錶咋辦 待刪除的節點是空節點咋辦 2 要刪除的節點在鍊錶中的位置有三種情況 1 鍊錶只有乙個節點,待刪除節點是表頭又是尾節點 2 鍊錶有多個節點,待刪除的節點是...

Redis 鍊錶和鍊錶節點

每個鍊錶節點使用乙個 adlist.h listnode 結構來表示 typedef struct listnode listnode 多個 listnode 可以通過 prev 和 next 指標組成雙向鍊錶。使用 adlist.h list 來持有鍊錶,操作起來會更方便 typedef stru...

刪除鍊錶的節點 鍊錶操作

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。注意 此題對比原題有改動 示例 1 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.示例 2 輸入...