LeetCode 19 刪除鍊錶的倒數第n個節點

2021-09-24 20:01:31 字數 798 閱讀 6343

要求一次掃瞄完成

提示

只允許遍歷一次,且n一直有效,那麼可以利用雙指標解法(前指標、後指標),讓前指標先走n步,再讓兩個在指標同時後移,直到前指標到達尾部,此時,後指標的下乙個節點就是要被刪除的節點了。

#includeusing namespace std;

struct node;

int main()

else

} //輸出構建好的鍊錶

cout << "輸出構建好的鍊錶" << endl;

node *cur = head;

while (cur != null)

else

} cout << endl;

//刪除倒數第n個節點,一次掃瞄

int m;

cout << "輸入要刪除倒數第幾個節點" << endl;

cin >> m;//刪除倒數第m個節點

node *pre = head;

cur = pre;

while (m--)

cout << "初始時pre指向" << pre->val << " cur指向" << cur->val << endl;

while (cur != null)

else

} //輸出刪除後的鍊錶

cur = head;

while (cur != null)

else

} cout << endl;

return 0;

}

LeetCode 19 鍊錶(160)

1 如圖,鍊錶是一種非常常用的資料結構 煉表頭 指向第乙個鍊錶結點的指標 鍊錶結點 鍊錶中的每乙個元素,包括 1 當前結點的資料,2 下乙個結點的位址 鍊錶尾 不再指向其他結點的結點,其位址部分放乙個null,表示鍊錶到此結束。2 鍊錶可以動態地建立 動態地申請記憶體空間 int pint new ...

鍊錶 LeetCode19刪除鍊錶中的第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?分析 看到這個問題,第一反應,先求長度,再找節點,看一下高階,有...

Leetcode 19 刪除鍊錶的第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...