刷题力扣24-两两交换链表中的节点
发布时间:2022-10-12 13:03:11 476 相关标签:
题目:
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

思路:

如果想要改变某个节点的位置,作为单链表而言必须找到该节点的前一个节点,所以可以设置一个虚拟头结点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;
}
文章来源: https://blog.51cto.com/u_15505301/5604319
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报