JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

如何用Python快速反转链表

wys521 2025-05-14 17:26:00 精选教程 1 ℃ 0 评论

一个链表,我想倒过来,怎么排列呢?

只要有规律,就有方法,就怕我们没有规律乱排序,我们按照规律进行算计就好了。

我们首先要得到一个链表,也就是先构建一个,这里用手动来建立。然后我们通过什么方式取做,自己定义一个方法吧,通过反向指向原链表的第一个节点,然后next一个一个取好,就得到我们的结果了。

如下:

class ListNode:

def __init__(self, val=0, next=None):

self.val = val

self.next = next

def f_list(head):

pre_f = None

while head:

next_node = head.next # 临时保存下一个节点,整新的头

head.next = pre_f # 当前节点指向前一个节点

pre_f = head # 前处理的点 更新为当前节点

head = next_node # 当前节点移动到下一个节点

return pre_f # 返回反转后的头节点

# 我们先弄一个原链表:,为了方便一点,弄个顺子1 -> 2 -> 3 -> 4

node1 = ListNode(1)#1

node2 = ListNode(2)#2

node3 = ListNode(3)#3

node4 = ListNode(4)#4

node1.next = node2#连起来

node2.next = node3

node3.next = node4

# 方便后面对比,我们把原表打印下

def print_list(head):

res = []

while head:

res.append(str(head.val))

head = head.next

print("->".join(res))#用->隔开

print("原始链表的排列:")

print_list(node1) # 输出: 1->2->3->4

# 反转

new_head = f_list(node1)

# 4. 打印反转后的链表

print("反转后的表:")

print_list(new_head) # 输出: 4->3->2->1

代码允许如下,自己取。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表