0
点赞
收藏
分享

微信扫一扫

刷题力扣24-两两交换链表中的节点

题目:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

刷题力扣24-两两交换链表中的节点_链表

思路:

刷题力扣24-两两交换链表中的节点_虚拟头结点_02

如果想要改变某个节点的位置,作为单链表而言必须找到该节点的前一个节点,所以可以设置一个虚拟头结点dummyHead,让dummyHead.next指向head。然后就可以按照我途中的三个步骤开始写代码,这种题要自己把结构画出来,写代码能更直观

class Solution {
public ListNode swapPairs(ListNode head) {
ListNode dummyHead = new ListNode();
dummyHead.next = head;
ListNode cur = dummyHead;
//如果是偶数节点,cur.next为空是终止条件;如果是奇数节点,cur.next.next为空是终止条件
//并且顺序不能调换,否则会发生空指针异常
while(cur.next != null && cur.next.next != null){
ListNode temp = cur.next; //临时节点,防止cur.next节点丢失
ListNode temp1 = cur.next.next.next;
cur.next = cur.next.next; //第1步
cur.next.next = temp; //第2步
temp.next = temp1; //第3步
cur = cur.next.next;
}
return dummyHead.next;
}


举报

相关推荐

0 条评论