zoukankan      html  css  js  c++  java
  • 链表的逆置

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

    第一步 构造链表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class Node(object):
     
        def __init__(self, value,next):
            self.value= value
            self.next = next
     
     
    head= Node('头',None)
    last= head
    for iin range(5):
        node= Node('v%s' % i,None)
        last.next = node
        last= node
     
    # ######### 查看链表关系 ##########
    print('原始链表信息为:')
    print(head.value)
    print(head.next.value)
    print(head.next.next.value)
    print(head.next.next.next.value)
    print(head.next.next.next.next.value)
    print(head.next.next.next.next.next.value)

    第二步 链表逆置

    实现思路:

    实现代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    def reverse_linked_list(head):
        """
        链表逆置
        :param head:
        :return:
        """
        if not heador 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)
    print(new_head.next.next.next.next.next.value)
  • 相关阅读:
    shell 知识点
    辅助字符串处理类:org.apache.commons.lang3.StringUtils
    post请求(headers里有属性)报错:Request header field xxx is not allowed by Access-Control-Allow-Headers in preflight response
    vue-cli 打包报错:Unexpected token: punc (()
    遍历对象,并对其中第一个(随机)进行处理
    JavaScript中类似PHP的uniqid()方法
    使用crypto-js的md5加密
    Yarn、MapReduce、spark、storm的关系
    hadoop 知识点
    spring cloud 知识点
  • 原文地址:https://www.cnblogs.com/xiangwang1/p/15071563.html
Copyright © 2011-2022 走看看