一次遍歷解決鍊錶刪元問題

2021-10-24 22:17:43 字數 738 閱讀 4424

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

說明:給定的 n 保證是有效的。

高階:你能嘗試使用一趟掃瞄實現嗎?

使用兩個指標,他們的間隔剛好是n,使得當前乙個指標劃出鍊錶時,後乙個指標剛好指向要移除的元素的前一位。

注:為防止元素剛好一位且被刪除導致的空指標問題,應在對鍊錶操作之前新增頭指標,操作結束之後去除頭指標

/**

* 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(front != nullptr )

listnode *t = last->next;

last->next = t->next;

head = ans->next;

delete ans;

return head;

}};

鍊錶3 一次遍歷找到中間節點

一次遍歷就能夠找到中間節點,怎樣實現的呢?讓我們直奔主題 思想 首先經過兩次遍歷可以找到中間的節點,這個是毋庸置疑的,第一次檢視個數,第二次直接找出來了。但是我今天要記錄的就是怎樣通過一次的遍歷,就把中間的節點給找到!其實,我們可以這樣 定義兩個指標變數,當然是相應的結構體型別的啊,在判斷多餘兩個節...

mysql一次刪除兩張表 MySQL一次刪除兩張表

今天遇到了同時刪除兩張表的問題,試了很多方法都沒成功,如果在hibernate的話那就簡單了直接使用級聯就okay了,但用sql語句一時還是沒做出來在網上找到了解決方法 我用的第三種方法 商品表 product id name 表 image id product id name 1 delete ...

一次手機問題的解決

過年前買的諾基亞手機今天突然出了問題,具體症狀為 簡訊發不出去,打13800138000出現無網路訊號的提示。我想不可能被停機了,因為剛充了值。於是上網搜尋此類問題的解決辦法,找到一條相關的 1 你把手機設定裡的 網路設定 設定為gsm 就行,然後搜尋網路方式選擇 手動,選擇中國移動就行,別用自動 ...