给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
指针往后移动时,应当一次移动两个节点。
1 class ListNode: # 定义链表 2 def __init__(self, x): 3 self.val = x 4 self.next = None 5 6 class Solution: 7 def swapPairs(self, head): 8 p = head 9 if p == None: 10 return None 11 while p is not None and p.next is not None: 12 x = p.val # 存储临时交换数据 13 p.val = p.next.val 14 p.next.val = x 15 p = p.next.next # 往后同时移动两步节点 16 return head
1 struct ListNode { // 定义链表节点 2 int val; 3 ListNode *next; 4 ListNode(int x): val(x), next(NULL) {} 5 }; 6 7 class Solution { 8 public: 9 ListNode *swapPairs(ListNode *head) { // 函数返回的是首节点指针,所以函数类型为指针 10 ListNode *p = head; 11 if (head == NULL) 12 return NULL; 13 while(p != NULL && p->next != NULL){ 14 int x; // 存储临时交换数据 15 x = p->val; 16 p->val = p->next->val; 17 p->next->val = x; 18 p = p->next->next; // 往后同时移动两步节点 19 } 20 return head; 21 } 22 };
原文:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13056678.html