题目:
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.
思路:
只需交换两个相邻节点的value值即可
Python实现:
# -*- coding:utf-8 -*-
'''
Created on 2017年5月4日
@author: ZhuangLiang
'''
# Definition for singly-linked list.
from builtins import 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
"""
p=head
while head!=None and head.next!=None:
temp=head.val
head.val=head.next.val
head.next.val=temp
head=head.next
head=head.next
return p
if __name__=="__main__":
list=None
p=list
data=[1,2,3,4,8,9]
for i in data:
q=ListNode(i)
q.next=None
if list==None:
list=p=q
else:
p.next=q
p=p.next
r=Solution()
res=r.swapPairs(list)
while res!=None:
print(res.val);
res=res.next