网站首页 > 精选教程 正文
一个链表,我想倒过来,怎么排列呢?
只要有规律,就有方法,就怕我们没有规律乱排序,我们按照规律进行算计就好了。
我们首先要得到一个链表,也就是先构建一个,这里用手动来建立。然后我们通过什么方式取做,自己定义一个方法吧,通过反向指向原链表的第一个节点,然后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
代码允许如下,自己取。
- 上一篇: 「Java」详细了解抽象方法,抽象类
- 下一篇: javaList体系中的选择
猜你喜欢
- 2025-05-14 全网讲解最透彻:HashMap&ConcurrentHashMap总结 等你来看
- 2025-05-14 Python | Leetcode链表系列(上篇)
- 2025-05-14 为了面试字节跳动后端开发岗(Java)鬼知道我经历了什么..
- 2025-05-14 java面试必备:七个常见的Java算法问题和示例答案
- 2025-05-14 1年半经验,2本学历,Curd背景,竟给30K,我的美团Offer终于来了
- 2025-05-14 java八股文(值得收藏)
- 2025-05-14 Android高级/资深面试题
- 2025-05-14 图解 LeetCode 算法汇总——链表
- 2025-05-14 Python 切片:让你轻松玩转序列数据的“魔法剪刀”
- 2025-05-14 数据结构:单链表算法题,常见技巧套路心得分享
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)