Pythonは一方向チェーンテーブルの最下位からk番目のノードを見つけた

6656 ワード

1つのアルゴリズムを実現して、一方向チェーンテーブルの中で最後からk番目のノードを探し出します
class Node():
    def __init__(self,val):
        self.val = val
        self.next = None
class LinkList:
    def __init__(self):
        self.head = Node(Node)
    def init(self,iter):
        p = self.head
        for i in iter:
            p.next = Node(i)
            p = p.next
    def find_re_k(self,k): #  :  p1  head,   k ,   P1   p2,p1   head,  p1,p2   , p2    ,p1        k   。.,
        p1 = self.head#p1  head
        i =0
        while i< k-1:
            p1 = p1.next
            i += 1
        p2 = p1 #P1   p2
        p1 = self.head  #p1   head
        while p2.next is not None:
            #p1,p2   
            p2 = p2.next
            p1 = p1.next
        return p1.val
    def __str__(self):
        l = []
        p = self.head.next
        while p is not None:
            l.append(p.val)
            p = p.next
        return str(l)
if __name__ == '__main__':
    l = LinkList()
    l1 = (1,2,3,4)
    l.init(l1)
    print(l)
    print(l.find_re_k(1))