zoukankan      html  css  js  c++  java
  • 【Leetcode】 两两交换链表中的节点

    题目链接:两两交换链表中的节点


    题意:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

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


    题解:这个题建议自己画个图。。

    主要步骤大概就以下三步。能想出来,这个题基本就解决了。

    1、使新链表节点的ans的下一个节点变成head的下一个节点。

    2、使head节点的下一个节点变成head的下下节点。

    3、使ans下下节点变成head。

    完成这三步再去做一个更新,。ans当前节点更新到head的位置,head往下更新。


    代码:

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode* swapPairs(ListNode* head) {
    12         if(head == NULL || head->next == NULL)  return head;
    13 
    14         ListNode* ans = new ListNode(0);
    15         ListNode* res = ans;
    16 
    17         while(head && head->next){
    18             res->next = head->next;
    19             head->next = head->next->next;
    20             res->next->next = head;
    21 
    22             res = head; 
    23             head = head->next;
    24         } 
    25         return ans->next;
    26     }
    27 };
  • 相关阅读:
    SQL 通配符
    低压电器及其控制
    计算机组成原理
    ASP.NET MVC 4 跨域
    C#排序算法小结
    C# 集合扩展快速排序算法
    C# 排序算法记录
    文件大小
    ProcDump
    C# 获取文件MD5校验码
  • 原文地址:https://www.cnblogs.com/Asumi/p/12514004.html
Copyright © 2011-2022 走看看