• Swap Nodes in Pairs(链表操作)


    Given a linked list, swap every two adjacent nodes and return its head.

    For example,
    Given 1->2->3->4, you should return the list as 2->1->4->3.

    Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed

    思路:

    1.(头二个节点已经事先处理)找出要换位置的两个节点的前驱节点,设为tempHead,设要更换的两个节点为p,q

    2.那么直接p节点拿出,tempHead->next=q;p->next=NULL;

    3.然后就是普通把p几点插入到q节点后面即可。p->next=q->next;q->next=p;

    4.最后把暂时头部节点后移两个位置,进行下一次更换。

    图解如下:

    代码:

    class Solution {
    public:
        ListNode* swapPairs(ListNode* head) {
            ListNode* res;
            if(head==NULL) return NULL;
            if(head->next==NULL) return head;
            //交换第一,二个节点
            ListNode* first=head->next;
            head->next=first->next;
            first->next=head;
    
            ListNode* tempHead=first->next;
            ListNode* p;
            ListNode* q;
            while (tempHead)
            {
                if(tempHead->next!=NULL&&tempHead->next->next!=NULL){
                    p=tempHead->next;
                    q=tempHead->next->next;
                }
                else return first;
    
                tempHead->next=q;
                p->next=NULL;//中间节点插入即可
    
                p->next=q->next;
                q->next=p;
                tempHead=q->next;
    
            }
            return first;
        }
    };
  • 相关阅读:
    爬虫的简单运用
    预测体育竞技比赛结果(新人练手)
    自己的第一个网页
    科学计算和可视化(numpy及matplotlib学习笔记)
    面向对象总结
    PIL库的总结及运用
    jirba库的使用和好玩的词云
    第一次结队作业
    四则运算版本升级
    自动生成小学四则运算项目练习(已更新)
  • 原文地址:https://www.cnblogs.com/fightformylife/p/4108142.html
Copyright © 2020-2023  润新知