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

2021-10-11 13:41:25 字數 814 閱讀 2855

用兩個指標,先開啟間隔n,然後一起往後移動,這樣就不用遍歷兩次了

中間做題過程**現的問題在於沒想到這個head節點是乙個存有資料的節點,這使得我在除錯過程中總是出現空指標的情況。

因此我自己設定乙個虛指標(其實是看了下題解才領悟過來),指向第乙個資料,然後再開始跑

/**

* definition for singly-linked list.

* struct listnode

* listnode(int x) : val(x), next(nullptr) {}

* listnode(int x, listnode *next) : val(x), next(next) {}

* };

*/class

solution

//同時往後遍歷

while

(pright-

>next !=

null

)//儲存一下要刪除的節點資訊

listnode* delnode=pleft-

>next;

//left指向的倒數n+1個節點

pleft-

>next = pleft-

>next-

>next;

//**刪除節點的記憶體

delete delnode;

//返回頭

listnode* ret=dummyhead-

>next;

delete dummyhead;

return ret;}}

;

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

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?說實話,就我的水平而言感覺這道題坑點還真不少,先來我的乙個粗糙版...

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

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?class solution def removenthfrom...

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

給定乙個鍊錶,刪除鍊錶的倒數第n個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.給定的n保證是有效的。首先遍歷得出鍊錶的長度l,然後刪除第l n個節點 definition for singly linked list....