一、题目描述:
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处
二、代码描述:
迭代法
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode cur=head;
//创建一个新节点,让其next指向head
ListNode newHead=new ListNode(-1);
newHead.next=head;
//pre作用:辅助节点,进行节点间的链接。
ListNode pre=newHead;
//链表为空或者链表只有一个元素时,则停止交换
while(cur!=null&&cur.next!=null){
ListNode next=cur.next;
ListNode temp=next.next;
//两两节点进行交换
cur.next=temp;
pre.next=next;
next.next=cur;
//更新节点,使其指向下一组节点
pre=cur;
cur=cur.next;
}
return newHead.next;
}
}