1. 程式人生 > >輸出連結串列倒數第k個結點

輸出連結串列倒數第k個結點

 問題描述:

輸入一個連結串列,輸出該連結串列中倒數第k個結點。

解題思想:

若連結串列為空或者k為0,則返回的是None。

當連結串列不為空時,有兩種情況:

連結串列長度n<k時,不存在倒數第k個結點,則返回None。

連結串列長度n>k時,設定一個長度為k的list,不斷地將連結串列新輸入的結點儲存進來,若數量超過了k,則把最早進來的丟擲,直到最後一個結點,此時list儲存的是最後k個結點,輸出list中的第一個即可。

# coding:utf-8
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        if head==None or k==0:
            return None
        temp=[]
        d=0
        while head!=None:
            if len(temp)==k:
                temp.pop(0)
            temp.append(head)
            head=head.next
            d+=1
        if d<k:
            return None
        else:
            return temp[0]
if __name__=="__main__":#輸入一個連結串列,輸出該連結串列中倒數第k個結點。
    a=Solution()
    head=ListNode(0)
    k=head
    for i in range(1,10):
        k.next = ListNode(i)
        k=k.next
    k=head
    while k!=None:
        print k.val
        k=k.next
    print a.FindKthToTail(head,5)