首页 > 代码库 > [LeetCode]Swap Nodes in Pairs
[LeetCode]Swap Nodes in Pairs
Description:
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.
描述:
给出单链表,交换每一个相邻的结点后返回链表头部。
比如,给出1->2->3->4,返回2->1->4->3。
回答的算法只能够有常数级别的空间花费,也不可以改变链表中结点的值。能够改变的只有结点本身(笔者注:即结点的next指针)。
分析:
又是一道看似简单,其实很考验细节的题目。数据结构已给定,那么就按照题目的意思解决。注意单链表中的边界条件。
C++代码:
1 class Solution { 2 public: 3 ListNode *swapPairs(ListNode *head) 4 { 5 if( head == NULL ) return NULL; 6 if( head ->next == NULL ) return head; 7 8 ListNode *first = head; 9 ListNode *second = first ->next;10 head = second;11 12 while( (first != NULL ) && (first ->next != NULL) ) {13 first ->next = second ->next;14 second ->next = first;15 16 if( first ->next != NULL ) {17 ListNode *tmp = first;18 first = first ->next;19 second = first ->next;20 if( second != NULL ) {21 tmp ->next = second;22 }23 }24 }25 26 return head;27 }28 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。