查找单向链表中的最后一个 K
Finding the last K in a singly linked list
我有一个算法应该接受输入 k 和 return 相应的第 k 个最后一个元素,所以如果 k=1,它应该 return 最后一个元素,如果 k=2 如果应该 return 倒数第二个元素...依此类推
我不明白某些代码行在做什么或为什么需要它们,例如:
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
returnsNIL
如果这个长度小于k
.
接下来的两行 else tmp = L
是多余的。
n − k + 1
是倒数第 k
个元素的索引。
第二个 while
循环将列表遍历到此元素。
我有一个算法应该接受输入 k 和 return 相应的第 k 个最后一个元素,所以如果 k=1,它应该 return 最后一个元素,如果 k=2 如果应该 return 倒数第二个元素...依此类推
我不明白某些代码行在做什么或为什么需要它们,例如:
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
returnsNIL
如果这个长度小于k
.
接下来的两行 else tmp = L
是多余的。
n − k + 1
是倒数第 k
个元素的索引。
第二个 while
循环将列表遍历到此元素。