在單鏈表中刪除倒數第K個節點 Python 版

2021-08-11 05:50:13 字數 899 閱讀 7414

題目

給定乙個鍊錶,刪除其中倒數第k個結點。

**

class

linkedlistalgorithms

(object):

def__init__

(self):

pass

defrm_last_kth_node

(self, k, linked_list):

# 刪除倒數第 k 個節點,針對單鏈表的

if linked_list.is_empty():

print

'the given linked_list is empty.'

if k < 1

or k > linked_list.get_length():

print

'wrong kth number out of index.'

k = linked_list.get_length() - k

if k == 0:

p = linked_list.head

linked_list.head = p.next

else:

p = linked_list.head

for i in xrange(k-1):

p = p.next

p.next = p.next.next

分析

在這個函式中,我又一次寫了從單鏈表中刪除乙個結點的**,事實上不需要,因為我在實現單鏈錶類的時候已經寫過了刪除乙個結點的方法了。python版本單鏈表實現**時間複雜度就是一遍迴圈鍊錶,空間複雜度用到了乙個指標。

如果是雙鏈表的話,複雜度並沒降低,畢竟仍然要一遍迴圈。

刪除單鏈表倒數第K個節點

有p1,p2兩個指標,p1從頭開始跑,先跑k個節點,然後p2開始跑,當p1跑到頭時,p2指向的就是倒數第k個節點了。這道題的思路比較簡單,要想做得更好,可以加入一些魯棒性的考慮,比如說空鍊錶情況,鍊錶長度小於k等。下面是 include struct node class solution if k...

在單鏈表和雙鏈表中刪除倒數第K個節點

分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。如果鍊錶長度為n,則要時間複雜度達到o n 額外空間複雜度達到o 1 一種方法是設定快慢指標,快指標先走k步,此時慢指標從頭開始走,兩者同時開始走,當快指標走到尾時,慢指標走到倒數第k個節點,刪除當前慢指標的...

在單鏈表和雙鏈表中刪除倒數第K個節點

說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 在單鏈表和雙鏈表中刪除倒數第k個節點 這一題目的c 復現。感謝左程雲老師的支援。題目 分別實現兩個函式,乙個可以刪除單鏈表中倒數第 k 個節點,另乙個可以刪除雙鏈表中倒數第 k 個節點。要求 如果鍊錶長度為 n,時間複雜度達到 o n 額...