栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > C/C++/C#

力扣刷题记录9.1-----24. 两两交换链表中的节点

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣刷题记录9.1-----24. 两两交换链表中的节点

目录
  • 一、题目
  • 二、代码
  • 三、运行结果


一、题目

二、代码
class Solution {
public:
    ListNode* swapPairs(ListNode* head)
    {
     
    // //统一链表格式
    // ListNode* dummyhead = new ListNode(0);  //设置虚假的头结点 为了使得单节点和多节点情况统一 
    // dummyhead->next = head;

    ListNode* test_node = new ListNode(0);    //探测节点 查看之后是否还有两个以上节点
    test_node=head;

    if(test_node==nullptr) return test_node;   //空节点直接返回
    else if(test_node->next==nullptr) return test_node;  //单个节点直接返回
    else                                       //大于两个节点 开始操作   比如 2 1 null 
    {

    ListNode* return_node = new ListNode(0); 
    return_node=head->next;

    ListNode* temp_node = new ListNode(0);      //两大类情况 如果链表内没有节点或者只有一个节点 那么应该直接返回    ***最核心部分 哨兵探测
    ListNode* quick_node = new ListNode(0); 
    ListNode* slow_node = new ListNode(0); 
    


    temp_node=head->next->next;
    quick_node=head->next;
    slow_node=head;

    int one_opeation=0;

    while(test_node!=nullptr&&test_node->next!=nullptr)
    {
        std::cout<<" 进入  "<val   "<val <val   "<val <val   "<val <next->next;  // 每一轮探测指针单独操作

    

       if(one_opeation==1)
       {
       slow_node=temp_node;
       quick_node=slow_node->next;
       temp_node=quick_node->next;
       }

        if(one_opeation==0) one_opeation=1;   //第一轮不需要

       quick_node->next=slow_node;

       //temp_node往下移动会有三种情况  nullprt  一个值 两个值
       if(temp_node==nullptr)         slow_node->next=temp_node;
       else if (temp_node!=nullptr&&temp_node->next==nullptr)   slow_node->next=temp_node;
       else if(temp_node!=nullptr&&temp_node->next!=nullptr)    slow_node->next=temp_node->next;
 
       

            // //用于显示当前链表
            //     ListNode *show_node;
            //     show_node=return_node;  //构造处理节点
            //     while(show_node->next!=nullptr)
            //     {
            //         std::cout<<"  "<val<<"   ";
            //         show_node=show_node->next;
            //     }
            //     std::cout<<"  "<val<<"   ";  //打印最后一个
            //     std::cout<<"  "<< std::endl;

        //    //用于显示当前节点值
        //    std::cout<<"slow_node->val   "<val <val   "<val <val   "<val < 
三、运行结果 

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038077.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号