您的位置:首页 > 其它

两两交换链表中的节点

2017-03-27 23:48 246 查看
题目:给一个链表,两两交换其中的节点,然后返回交换后的链表。

样例

给出 
1->2->3->4
, 你应该返回的链表是 
2->1->4->3


思路:两两交换节点乍一看好像就是交换两个节点的位置,仔细想一想交换的是数值,两个一组两个一组,只要head->next不是NULL,或者head不是NULL就可以交换俩个节点的值,head节点再移动两个位进行下一次条件的判断。中间值得注意的是,要提前把交换的值记录下来,不要交换的时候丢失。下面看一下具体的代码。

代码:

struct ListNode {

     int val;

     ListNode *next;

      ListNode(int x) : val(x), next(NULL) {}

  };

 

class Solution {

public:

    /**

     * @param head a ListNode

     * @return a ListNode

     */

    ListNode* swapPairs(ListNode* head) {

        // Write your code here

        ListNode *dummy=new ListNode(0);

        dummy->next=head;

        while(head!=NULL&&head->next!=NULL)

        {

          int s=head->val;

          head->val=head->next->val;

          head->next->val=s;

          head=head->next->next;

          

    }

    return dummy->next;

    }

};

感想:这个题思路上并不难,写代码的时候重点在于认真仔细。这个虽然简单,但并不是一下子就能写对,思考还是有不足的地方。期待自己的进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: