题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
import sys class listNode(): def __init__(self,val=0): self.next = None self.val = val n=0 list1=[] for line in sys.stdin: a = line.split() if n%3 == 0 : n+=1 continue elif n % 3 == 2: head = listNode() for x in range(int(a[0]),0,-1): if n == 0: print() head.next = listNode(list1.pop()) head = head.next print(int(head.val)) else: list1 = a n+=1 # if listNode(i).next: # print(list1[int(i)].val) # else: # list1 = # list1.append(listNode(i)) # if a.index(i)< len(a)-1: # listNode(i).next = listNode(a[a.index(i)+1]) # n+=1
具体的链表构建过程如下:
- 创建一个
head
节点作为链表的头节点。 - 根据读取的值列表从后向前遍历,每读取一个值,创建一个新的节点,并将其设为当前节点的下一个节点。
- 最后,打印链表最后一个节点的值。
需要注意的是,代码中有一行 head.next = listNode(list1.pop())
,这行代码的作用是将链表的头节点的下一个节点指向新创建的节点。由于链表的头节点在后续的循环中可能会被修改,所以在这里使用了一个额外的变量 head
来指向当前节点,并通过 head = head.next
将 head
更新为下一个节点。