zoukankan      html  css  js  c++  java
  • 1.7交换链表中的相邻节点

    交换链表中的相邻节点

    题目描述:

    把链表相邻元素翻转,例如给定链表为1——>2一>3一>4一>5——>6一>7,则翻转后的链表变为2一>1一>4一>3一>6一>5一>7

    解题思路:

    就地逆序法:

    通过调整结点指针域的指向来直接调换相邻的两个结点。如果单链表恰好有偶数个结点,那么只需要将奇偶结点对调即可,如果链表有奇数个结点,那么只需要将除最后一个结点外的其它结点进行奇偶对调即可。

    代码实现:

    # -*-coding:utf-8-*- 
    """
    @Author  : 图南
    @Software: PyCharm
    @Time    : 2019/9/6 18:34
    """
    class Node:
        def __init__(self, data=None, next=None):
            self.data = data
            self.next = next
    
    
    def print_link(head):
        if head is None or head.next is None:
            return None
        cur = head.next
        while cur.next != None:
            print(cur.data, end=' ')
            cur = cur.next
        print(cur.data)
    
    
    def con_link(n):
        head = Node()
        cur = head
        for i in range(1, n+1):
            node = Node(i)
            cur.next = node
            cur = node
        return head
    
    
    def reverseNode(head):
        pre = head
        cur = pre.next
        while cur is not None and cur.next is not None:
            next = cur.next
            pre.next = next
            cur.next = next.next
            next.next = cur
            pre = cur
            cur = pre.next
        return head
    
    
    if __name__ == '__main__':
        head = con_link(6)
        print_link(head)
        head = reverseNode(head)
        print_link(head)
    

    运行结果:


  • 相关阅读:
    Django----博客文章数据返回
    Django----admin模块初识
    Django搭建博客文章---模型层
    Js 提交 form 表单
    sql 查询 between and 和 >= <= 比较
    C# 未能加载项目文件
    不一样的 Null
    Js实现table单双行交替色
    C# 判断一个string型的时间格式是否正确
    利用 Label 小小的提升一下用户体验
  • 原文地址:https://www.cnblogs.com/miao-study/p/11479801.html
Copyright © 2011-2022 走看看