leetcode(24) - Swap Nodes in Pairs

来源:互联网 发布:2017社会发展数据 编辑:程序博客网 时间:2024/06/03 18:47

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.


/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */struct ListNode* swapPairs(struct ListNode* head) {    struct ListNode* p_1=head;       if (!p_1) return NULL;    if (!p_1->next) return head;        struct ListNode *p_2=p_1;     struct ListNode *p_3=p_1->next;    int i =0;    while(p_2 && p_3){        i++;        if(p_2==head){                        p_2->next = p_3->next;            p_3->next = p_2;            head=p_3;        } else {                    p_2->next = p_3->next;            p_1->next = p_3;            p_3->next = p_2;        }               p_1=p_2;                if (p_2->next != NULL)  {            p_2=p_2->next;            if(p_2->next != NULL) {                p_3=p_2->next;            } else {                break;            }        } else {            break;        }                    }            return head;}







0 0
原创粉丝点击