簡體   English   中英

一次刪除單個鏈接列表中的第k個元素

[英]Remove kth last element from a Singly Linked List in a single pass

我正在練習Python,卻想不出任何解決此問題的方法。 問題是僅在一個遍歷和恆定的空間內從單個鏈接列表中刪除第k個最后一個元素。 我只能想到需要2次通過的解決方案。 另外,在問題中,沒有提到列表的大小,因此我假設該大小是已知的。 請問有人可以單次通過此方法嗎?

進行操作時,將臨時對象的指針/位置緩存在要刪除的臨時對象之前。

因此,將有一個循環,直到最后。 將有一條語句在temp中緩存第(ik-1)個元素。

當此循環結束時,temp將具有要刪除的項目的位置。

希望這可以幫助。

如果知道大小s - kth刪除s - kth元素。

如果不是這種情況,那么我將使用兩個跑步者,一個是比第二個領先k個索引。 當第一個跑步者到達列表的末尾時,第二個跑步者正好指向第k個最后一個元素。

來自GeeksforGeeks

方法2(使用兩個指針)

維護兩個指針–參考指針和主指針。 初始化引用和主指向head的指針。 首先將參考指針從頭移到n個節點。 現在將兩個指針一一移動,直到參考指針到達終點。 現在主指針將從末尾指向第n個節點。 返回主指針。

可用python實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM