0
点赞
收藏
分享

微信扫一扫

0基础认识C语言(理论知识)

水沐由之 2024-06-03 阅读 5

原题链接24. 两两交换链表中的节点 - 力扣(LeetCode)

思路,请看图片的过程模拟,这里添加了一个哨兵节点0,目的是为了方便操作,得到指向1节点的指针。

 class Solution {
  public:
      ListNode* swapPairs(ListNode* head) {
          auto dummy = new ListNode(0, head); // 用哨兵节点简化代码逻辑
          auto node0 = dummy;
          auto node1 = head;
          while (node1&&node1->next) { // 至少有两个节点
              auto node2 = node1->next;//指向2的
              auto node3 = node2->next;//指向3的
              node0->next = node2;//0->2
              node2->next = node1;//2->1
              node1->next = node3;//1->3
              //数字顺序 0 2 1 3,下面要讨论1 3 这两个节点
              node0 = node1;
              node1 = node3;



          }
          return dummy->next; // 返回新链表的头节点
      }
  };
举报

相关推荐

0 条评论