【LeetCode】24. Swap Nodes in Pairs
【题目】
给一个链表,更换相邻结点的位置,要求不能修改结点的值,只能修改结点位置
比如:
给出1->2->3->4
, 返回2->1->4->3
.
【思路】
该题考察链表的操作,
注意当链表个数为奇数时
(1)画图分析链表问题
(2)设置一个虚拟的头结点
(3)设置三个指针 temp、first、second
第一步
第二步
第三步
第四步
// Definition for singly-linked list. class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } public class Solution { public ListNode swapPairs(ListNode head) { ListNode virtualHead = new ListNode(-1); virtualHead.next = head; ListNode temp = virtualHead; ListNode first = temp.next; ListNode second = null; while(first!=null){ second = first.next; if(second == null) break; temp.next = second; // 第二步 first.next = second.next; // 第三步 second.next= first; // 第四步 temp = first; first = temp.next; } return virtualHead.next; } }