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)

运行结果:


posted @ 2019-09-07 11:32  上进的小苗同学  阅读(934)  评论(0)    收藏  举报