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 };
  • 相关阅读:
    C语言-const和volatile深度分析
    C语言循环语句工程用法
    C分支语句的工程用法
    函数对象分析
    关于protel电路图导入word
    单片机程序编写与下载
    关于Protel输出PDF原理图
    关于定时器、外部中断的一些理解
    锁存、译码介绍
    关于Proteus电压设置
  • 原文地址:https://www.cnblogs.com/Asumi/p/12514004.html
Copyright © 2011-2022 走看看