首页 > 编程语言 > 详细

两两交换链表中的节点(Python and C++解法)

时间:2020-06-06 22:43:17      阅读:60      评论:0      收藏:0      [点我收藏+]

题目:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs

思路:

  指针往后移动时,应当一次移动两个节点。

Python解法:

 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

C++解法:

 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 };

两两交换链表中的节点(Python and C++解法)

原文:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13056678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!