查找单链表中的最后一个K



我有一个算法,应该输入k并返回相应的最后k个元素,所以如果k=1,它应该返回最后一个元素,如果k=2,它应该返回最后第二个元素…等等

我不明白一些代码行在做什么或者为什么它们需要在那里,例如:

n = n - k + 1

这是整个代码,如果能帮助理解每一行都在做什么就太好了:

function lastk(List L, Int k) → List 
tmp = L
n = 0
while tmp ̸= NIL do
n=n+1
tmp = tmp.next 
if n<k then
return NIL 
else
tmp = L
n = n − k + 1 
i=1
while i < n do
tmp = tmp.next
i=i+1 
return tmp

第一个while循环计算列表的长度,如果L返回的NIL的长度小于k

下两行else tmp = L是多余的。

n − k + 1k从末尾开始的第一个元素的索引。

第二个while循环遍历列表到此元素。

最新更新