6 链表成对调换

题目

链表成对调换

1->2->3->4 转换成 2->1->4->3

通过递归实现

swap_pairs_list_node.py

#!/bin/env python3
# -*- coding: utf-8 -*-
# version: Python3.X


__author__ = '__L1n__w@tch'


def swap_pairs(head_node):
    """
    链表成对调换
    :param head_node:
    :return:
    """
    if head_node is not None and head_node.next is not None:
        next_node = head_node.next
        head_node.next = swap_pairs(next_node.next)
        next_node.next = head_node
        return next_node
    return head_node


def print_list_node(head_node):
    """
    顺序打印链表
    :param head_node: 头结点
    :return: None
    """
    for node in list_node:
        print("No.{} List Node, Next: {}".format(node.value, node.next.value if node.next is not None else None))
    print()


class ListNode:
    def __init__(self, value, next_node=None):
        self.value = value
        self.next = next_node


if __name__ == "__main__":
    list_node = list()
    for i in range(4, 0, -1):
        list_node.append(ListNode(i, list_node[-1] if len(list_node) > 0 else None))
    list_node = list(reversed(list_node))

    print_list_node(list_node[0])

    swap_pairs(list_node[0])
    print_list_node(list_node[0])

Last updated