标签:
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.
题意:两两交换结点思路:首先很容易用两个指针t1,t2做到前后结点的交换,然后再用一个结点来记录前一个,然后就能处理了
/** * 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->next == NULL) return head; ListNode *t1, *t2, *pre; t1 = head; pre = head; while (t1 != NULL && t1->next != NULL) { t2 = t1->next; t1->next = t2->next; t2->next = t1; if (pre != head) pre->next = t2; else head = t2; pre = t1; t1 = t1->next; } return head; } };
标签:
原文地址:http://blog.csdn.net/u011345136/article/details/43819947