您的位置:首页 > 其它

两两交换链表中的节点

2017-03-29 19:03 246 查看
问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。

样例

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


解题思路:现在链表最前面建立一个节点用于输出最后的链表,然后找到下两个节点交换两个节点的值,然后再找到下两个,如果链表节点个数是奇数用条件语句判断就可以了。

实现代码:class Solution {

public:

    ListNode* swapPairs(ListNode* head) {

        // Write your code here

    ListNode* dummy= new ListNode(0);

    dummy->next=head;

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

           int n=head->val;

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

           head->next->val=n;

           head=head->next->next;

    }

    return dummy->next;

    }

};

感悟:一开始没怎么思考,感觉这个题很麻烦,可是后来仔细一想想,就是交换两个节点的值,然后以此向下遍历就可以了,其实这题很简单,多想想就可以了,但是得注意链表节点的个数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: