利用雙重指標來實現單向鍊錶的節點交換

2021-08-18 01:36:09 字數 732 閱讀 1694

一道leetcode中的題:

given a linked list, swap every two adjacent nodes and return its head.

for example,

given 1->2->3->4, you should return the list as 2->1->4->3.

your algorithm should use only constant space. you may not modify the values in the list, only nodes itself can be changed.

以下是摘自討論區的乙個利用雙重指標的解法:

listnode **pp = &head, *a, *b;

while ((a = *pp) && (b = a->next))

return head;}

輸入乙個鍊錶

node1 -> node2 -> node3 -> node4

值得注意的是**段

*pp = b;

pp = &(a->next);

第一次迴圈結束的時候pp指向的是node1的next指標,在第二次迴圈中

*pp =b;
將node1的next賦值為node4

單向鍊錶的實現

c語言實現單向鍊錶是利用結構體作為節點,結構體指標傳遞位址 include include include typedef struct node node typedef struct node lnode 定義結構體資料型別lnode typedef struct node linklist 定...

單向線性鍊錶的實現

用c實現的單向線性鍊錶,支援追加,插入節點,刪除節點,清空,刪除匹配節點,鍊錶反轉,有序插入等操作。分為三個檔案list.h包含鍊錶結構和函式的宣告。list.cpp是各種函式的實現,test.cpp包含測試 list.h ifndef list h define list h include us...

單向鍊錶的java實現

鍊錶這種資料結構,各物件按照線性順序進行排列,每乙個物件包含乙個關鍵字域以及兩個指標next和prev 下面是鍊錶的示意圖 下面再來看一下鍊錶的刪除以及插入操作 刪除插入是鍊錶擅長的,效率要比陣列高很多 2.插入 3.刪除 最後貼出實現鍊錶的 package aa public class myli...