链表的逆置

链表是一个特殊的数据结构,其中每个节点包含自己的数据以及下一个值的引用(指针),链表的逆置就是指将链表下一个值的引用(指针)调换,如下图所示:

 

 

 链表的节点的结构如下:

 

 data为自定义的数据,next为下一个节点的地址

一 构造链表#

复制代码
class Node(object):
    def __init__(self, value, next):
        self.value = value
        self.next = next


head = Node('', None)
last = head
l = ['涉哥', '刚哥', '雷哥', '强哥']
for i in l:
    node = Node('%s' % i, None)
    last.next = node
    last = node

# ######### 查看链表关系 ##########
print('原始链表信息为%s'%head.value)
print(head.next.value)
print(head.next.next.value)
print(head.next.next.next.value)
print(head.next.next.next.next.value)
复制代码

 

第二步 链表逆置 #

 

 

复制代码
def reverse_linked_list(head):
    """
    链表逆置
    :param head:
    :return:
    """
    if not head or not head.next:
        return head

    prev_node = None
    current_node = head
    next_node = head.next

    while True:
        current_node.next = prev_node    # 变箭头
        if not next_node:
            break
        prev_node = current_node
        current_node = next_node
        next_node = current_node.next
    return current_node


new_head = reverse_linked_list(head)        

print('逆置之后的链表')
print(new_head.value)
print(new_head.next.value)
print(new_head.next.next.value)
print(new_head.next.next.next.value)
print(new_head.next.next.next.next.value)
复制代码

 

  

posted @   流年中渲染了微笑  阅读(963)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
CONTENTS