千家信息网

两两交换链表中的节点示例

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章主要讲解了"两两交换链表中的节点示例",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"两两交换链表中的节点示例"吧!自己解题第一次 (超时了)pu
千家信息网最后更新 2024年11月30日两两交换链表中的节点示例

这篇文章主要讲解了"两两交换链表中的节点示例",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"两两交换链表中的节点示例"吧!

  • 自己解题第一次 (超时了)

public ListNode swapPairs(ListNode head) {
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next.next;
if (next != null) {
ListNode temp = curr;
curr = next;
curr.next.next = temp;
}
}
return curr;
}

  • 自己第二次解题(超时 错误)

public ListNode swapPairs(ListNode head) {
ListNode curr = head;
ListNode pre = head.next;
while (curr != null && pre != null) {
ListNode a = curr;
ListNode b = curr.next;
// 修改当前节点的指针指向前一个节点
a.next = pre;
pre.next = b;
curr = b.next;
pre = b;
}
return pre;
}

  • 读分析之后的答案

public ListNode swapPairs(ListNode head) {    // 创建一个空节点 默认指向头指针   ListNode pre = new ListNode(0);   pre.next = head;   // temp指向第一个node   ListNode temp = pre;   while(temp.next != null && temp.next.next !=null){       // 要交换的元素       ListNode a = temp.next;       // 要交换元素的下一个元素       ListNode b = temp.next.next;        //temp指向b       temp.next = b;       // a指向b.next       a.next = b.next;       // b指向a       b.next = a;       // 将交换完的a节点 变成起始节点       temp = a;   }   //  ???? 这个返回值还是不理解 先跳过   return pre.next;}

感谢各位的阅读,以上就是"两两交换链表中的节点示例"的内容了,经过本文的学习后,相信大家对两两交换链表中的节点示例这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0