题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
构造链表
- 定义一个链表结构
- 尾部添加链表
- for循环链接,题目要求是倒数第k个,那我们正向for循环,取 链表长度 - k 的那个节点值,就是我们要的答案
- 题目要求需要多次输入,所以要用while去保证可以多次输入样例
class ListNode:
def __init__(self, val: int):
self.val = val
self.next = None
def append_link(head: ListNode, val: int):
cur = head
while cur.next is not None:
cur = cur.next
cur.next = ListNode(val)
return head
def get_nth_from_the_end_in_link(head: ListNode, nth: int):
link_length = 0
cur = head
while cur is not None:
cur = cur.next
link_length += 1
count = link_length - nth
res = head
while count > 0 and res:
count -= 1
res = res.next
if res:
print(res.val)
while True:
try:
scan = int(input())
numbers = list(map(int, input().split()))
k = int(input())
head = ListNode(numbers[0])
for n in numbers[1:]:
append_link(head, n)
get_nth_from_the_end_in_link(head, k)
except:
break
查看11道真题和解析