拟人算法系列文章,以容易理解的方式描述算法,点赞收藏不迷路
反转链表
class Solution:
def reverse_list(self, head: LinkedNode) -> LinkedNode:
cur = head
pre = None
while cur:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
return pre # type: ignore
if __name__ == '__main__':
node1 = LinkedNode(1)
node2 = LinkedNode(2)
node3 = LinkedNode(3)
node1.next = node2
node2.next = node3
head = Solution().reverse_list(node1)
while head:
print(head.val, end=' ')
head = head.next
# 3 2 1
比如一个人有两个小弟,最开始这个人在链表开头位置,左边的小弟在开头的前一个位置
现在只要这个人所在位置的节点不为空,就让右边的小弟移动到这个人的下一个节点,让这个人的下一个节点指向左边小弟,左边小弟移动到这个人所在的节点,这个人移动到右边小弟所在的节点