LeetCode24 兩兩交換鍊錶中的節點

2021-09-11 14:51:22 字數 863 閱讀 2347

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

示例:

給定 1->2->3->4, 你應該返回 2->1->4->3.

建立乙個額外的節點來儲存下乙個節點所指向的節點,這樣就不會丟失節點

易錯點1:直接使用頭結點

return head->next;
這樣不對的,實際上傳入的head是乙個指標,這個指標指向了鍊錶的頭結點,在之後的操作中,改變了這個節點所指向的位址,此時指向的不再是原來鍊錶的第1個節點

易錯點2:p指向的錯誤

因為習慣地以為p應該指向下下個節點

以四個節點的鍊錶為例:

p->next=q->next
不對,這裡混淆了原鍊錶與新鍊錶的概念

p應該指向原來列表的第4個節點,新鍊錶的第3個節點

易錯點3:p指向的錯誤

在3中,沒有考慮僅有三個節點的情況,此時直接指向空節點,會導致引用出錯

c++**:

class solution 

else

p->next = null;

p = q->next;

} return q2->next;

}};

執行效率:

LeetCode 24兩兩交換鍊錶的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定 1 2 3 4,你應該返回 2 1 4 3.class solution listnode next head.next head.next next.next 指向下...

leetcode24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.說明 你的演算法只能使用常數的額外空間。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。注意while裡tmp1和tmp2已經交換了,所以node tmp1 definit...

leetcode 24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.複製 說明 listnode definition for singly linked list.type listnode struct func head listnode list...