Swap Nodes in Pairs问题及解法

来源:互联网 发布:mac变色龙引导工具 编辑:程序博客网 时间:2024/06/09 16:08

问题描述:

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; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* swapPairs(ListNode* head) {        if(head == NULL) return head;        ListNode* fore = new ListNode(0);        fore->next = head;        ListNode* last = fore;        while(head != NULL && head->next != NULL)        {        ListNode* t = head->next->next;        last->next = head->next;        last->next->next = head;        head->next = t;        last = last->next->next;        head = t;}head = fore->next;delete fore;return head;    }};


原创粉丝点击