Leetcode 24 :Swap Nodes in Pairs

来源:互联网 发布:面包板是做单片机的吗 编辑:程序博客网 时间:2024/06/09 22:40

题目大意:给定一个链表,交换其中相邻的2个元素

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.

Subscribe to see which companies asked this question


/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* swapPairs(ListNode* head) {                if(head == NULL) return NULL;                if(head != NULL && head->next == NULL) return head;                ListNode* headF = new ListNode(0);        headF->next = head;                ListNode* headO = headF;        while(headO->next != NULL && headO->next->next != NULL)        {            //            ListNode* tmpN1 = headO->next->next->next;            ListNode* tmpN = headO->next;                        headO->next = headO->next->next;                        headO->next->next = tmpN;                        headO->next->next->next = tmpN1;                        headO = headO->next->next;        }                ListNode*Re = headF->next;                delete headF;                return Re;    }};
class Solution {public:    ListNode* swapPairs(ListNode* head) {        bool first = true;        ListNode *pFirst = head, *pSecond = NULL, *pTail = NULL, *ret = head;        while (pFirst && pFirst -> next) {  // 判断是否存在两个后继元素            pSecond = pFirst -> next;       // 获取pSecond            if (first) ret = pSecond;       // 处理链表头            if (!first) pTail -> next = pSecond;    // 处理链表中段            pFirst -> next = pSecond -> next;               pSecond -> next = pFirst;       // 交换元素            pTail = pFirst;                 // 更新链表末尾                        pFirst = pFirst -> next;        // 进行到下一个元素            first = false;        }        return ret;    }};



0 0
原创粉丝点击