1. 程式人生 > >在單鏈表中刪除倒數第K個節點 Python 版

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

題目
給定一個連結串列,刪除其中倒數第k個結點。

程式碼

class LinkedListAlgorithms(object):
    def __init__(self):
        pass

    def rm_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版本單鏈表實現程式碼時間複雜度就是一遍迴圈連結串列,空間複雜度用到了一個指標。

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