交换链表中的相邻节点
题目描述:
把链表相邻元素翻转,例如给定链表为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)
运行结果:
原文地址:https://www.cnblogs.com/miao-study/p/11479801.html
时间: 2024-09-30 10:09:32