xar*_*rix 0 python algorithm linked-list
我对在 Python 中递归反转链表的算法有疑问。
def reverse(lis, prev = None):
if lis.next != None:
reverse(lis.next, lis)
lis.next = prev
Run Code Online (Sandbox Code Playgroud)
输入: 3 1 4
输出: 3
知道为什么它不起作用吗?
问题是您的链表的根也发生了变化:更改列表后,您的元素3确实是最后一个元素,您的函数也最好返回根:
def reverse(lis, prev = None):
if lis.next != None:
temp = lis.next
lis.next = prev
return reverse(temp, lis)
else:
return lis # the new root
Run Code Online (Sandbox Code Playgroud)
所以现在你用它来称呼它:
oldroot = ... #construct linked list
newroot = reverse(oldroot)
print(newroot)
Run Code Online (Sandbox Code Playgroud)
所以你的函数是正确的,但是你操作后手上的链表元素是错误的。
| 归档时间: |
|
| 查看次数: |
2320 次 |
| 最近记录: |