题目:
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
题意:
单链表中成对交换结点位置
代码:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
fro = ListNode(0) #指向需要交换的成对结点的前一个结点
beh = ListNode(0) #指向需要交换的成对结点的第一个结点
if head != None and head.next != None : #确定头结点
beh = head
head = head.next
fro = head.next
head.next = beh
beh.next = fro
while fro != None and fro.next != None : #对剩下结点循环交换
beh.next = fro.next
fro.next = fro.next.next
beh.next.next = fro
beh = fro
fro = fro.next
return head