zoukankan      html  css  js  c++  java
  • 24.成对的交换节点(24.Swap Nodes in Pairs)

    题目:

    给定一个链表,交换每两个相邻的节点并返回其头。

    例如,
    给定1->2->3->4,您应该返回列表2->1->4->3

    您的算法应该仅使用恒定空间。不能修改列表中的值,只能改变节点本身。

    思路:从链表的头节点开始将相邻的两个节点进行交换位置,然后剩下未交换的节点作为一个新的链表进行递归的交换,直到所要进行交换的链表节点个数小于2,则返回此链表。

    代码:

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) { val = x; }
     7  * }
     8  */
     9 class Solution {
    10     public ListNode swapPairs(ListNode head) {
    11         
    12         //思路:从链表的头节点开始将相邻的两个节点进行交换位置,然后剩下未交换的节点作为一个新的链表进行递归的交换,直到所要进行交换的链表节点个数小于2,则返回此链表。
    13         
    14         if(head==null||head.next==null){
    15             
    16             return head;
    17             
    18         }
    19         
    20         ListNode l=head.next.next;//剩下未进行交换节点组成的新链表的表头;
    21         
    22         //将原链表的头节点和第二个节点进行交换位置
    23         ListNode temp=head;
    24         head=temp.next;//将原链表的第二个节点变为头节点
    25         head.next=temp;//将原链表的头节点变为第二个节点
    26         temp.next=swapPairs(l);//新链表进行递归交换相邻节点作为已经交换相邻节点的第二个节点的后继节点;
    27         
    28         return head;
    29     }
    30 }
  • 相关阅读:
    2019秋季 关于C语言指针等探索
    第四次作业
    第三次作业
    错误总结
    第二次作业
    第一次随笔
    Linux Mint安装Docker踩坑指南
    浅论Javascript在汽车信号测试中的应用
    [瞎玩儿系列] 使用SQL实现Logistic回归
    MongoDB的账户与权限管理及在Python与Java中的登录
  • 原文地址:https://www.cnblogs.com/xuzhiyuan/p/7655552.html
Copyright © 2011-2022 走看看