题解 | #输出单向链表中倒数第k个结点#

输出单向链表中倒数第k个结点

https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d

class Node:
    def __init__(self,val) -> None:
        self.val = val
        self.next = None

class LinkList:
    def __init__(self) -> None:
        self.head = Node(0)

    #根据列表顺序创建链表
    def create_linklist(self,lt):
        cur = self.head
        for element in lt[1:]:
            node = Node(element)
            cur.next = node
            cur = node
    
    #反转链表
    def reversa_linklist(self):
        if self.head is None or self.head.next is None:
            pass
        cur = self.head
        pre = None
        while cur:
            tmp = cur.next
            cur.next = pre
            pre = cur
            cur = tmp
        self.head = pre
        return self

    #获取链表的第k个节点的值
    def get_value_k(self,k):
        cur = self.head
        count = 1
        while count < k and cur.next:
            cur = cur.next
            count += 1

        if count == k and cur:
            return cur.val
        else:
            return None

while True:
    try:
        n = int(input())
        lt = list(map(int,input().split()))
        k = int(input())
    except EOFError:
        break
    else:
        ll = LinkList()
        ll.head.val = lt[0]
        ll.create_linklist(lt)
        ll = ll.reversa_linklist()
        print(ll.get_value_k(k))

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务