您的位置:首页 > Web前端 > Node.js

【LeetCode】24. Swap Nodes in Pairs

2017-04-19 22:26 337 查看
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.

       题目大意为给定一个链表,两两一组,交换链表中的节点。这道题比较好理解,也比较简单。要注意的就是交换链表中的节点和交换值不同,要注意指针指向 ,分别定义表示要交换两节点的前一个节点和下一个节点避免节点丢失并且增加头结点便于操作.

代码如下:

public ListNode swapPairs(ListNode head) {
//定义一个头结点
ListNode head_prev=new ListNode(0);
head_prev.next=head;
//定义一个节点始终指向要交换节点的前一个节点
ListNode node_prev=head_prev;
while(head!=null&&head.next!=null){
//定义一个节点用于保存要交换节点的下一个节点,避免丢失
ListNode node_next=head.next.next;
//交换节点
node_prev.next=head.next;
head.next.next=head;
head.next=node_next;
//交换完毕,向后移动两位
node_prev=node_prev.next.next;
head=node_next;
}
return head_prev.next;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java leetcode