您的位置:首页 > 其它

两两交换链表中的节点

2017-03-31 08:23 225 查看
题目:两两交换链表中的节点

问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。如:给出 
1->2->3->4
,
你应该返回的链表是 
2->1->4->3


思路:通过改变指针指向的元素改变两个元素的位置。

代码:

class Solution {

public:

    /**

     * @param head a ListNode

     * @return a ListNode

     */

    ListNode* swapPairs(ListNode* head) {

        // Write your code here

        if(!head)return NULL;

        if(head&&head->next){

             ListNode*a = head;

            ListNode*b =head->next;

            a->next = b->next;

            b->next = a;

            head=b;

        }

else return head;

         ListNode*temp  = head->next;

        while(temp&&temp->next&&temp->next->next){

            ListNode*a = temp->next;

            ListNode*b = temp->next->next;

            a->next = b->next;

            b->next = a;

            temp->next = b;

     
4000
      temp = a;

        }

        return head;

    }

    

};

感想:即使有很多个节点相互变化,也不要弄混,可以通过画图来确定代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: