{
  "type": "code_options",
  "author": "https://github.com/begeekmyfriend/leetcode",
  "source": "solution.md",
  "exercise_id": "cb4c24a331b64c8c91916b1d751fa87d",
  "keywords": "递归,链表",
  "title": "两两交换链表中的节点",
  "desc": [
    {
      "content": "\n<p>给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。</p><p><strong>你不能只是单纯的改变节点内部的值</strong>，而是需要实际的进行节点交换。</p><p> </p><p><strong>示例 1：</strong></p><img alt=\"\" src=\"https://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0000-0099/0024.Swap%20Nodes%20in%20Pairs/images/swap_ex1.jpg\" style=\"width: 422px; height: 222px;\" /><pre><strong>输入：</strong>head = [1,2,3,4]<strong><br />输出：</strong>[2,1,4,3]</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>head = []<strong><br />输出：</strong>[]</pre><p><strong>示例 3：</strong></p><pre><strong>输入：</strong>head = [1]<strong><br />输出：</strong>[1]</pre><p> </p><p><strong>提示：</strong></p><ul>\t<li>链表中节点的数目在范围 <code>[0, 100]</code> 内</li>\t<li><code>0 <= Node.val <= 100</code></li></ul><p> </p><p><strong>进阶：</strong>你能在不修改链表节点值的情况下解决这个问题吗?（也就是说，仅修改节点本身。）</p>",
      "language": "markdown"
    }
  ],
  "answer": [
    {
      "content": "",
      "language": "cpp"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ]
  ],
  "template": {
    "content": "#include <bits/stdc++.h>\nusing namespace std;\nstruct ListNode\n{\n\tint val;\n\tListNode *next;\n\tListNode() : val(0), next(nullptr) {}\n\tListNode(int x) : val(x), next(nullptr) {}\n\tListNode(int x, ListNode *next) : val(x), next(next) {}\n};\nclass Solution\n{\npublic:\n\tListNode *swapPairs(ListNode *head)\n\t{\n\t\tstruct ListNode dummy, *prev = &dummy, *p = head;\n\t\tdummy.next = head;\n\t\twhile (p != nullptr && p->next != nullptr)\n\t\t{\n\t\t\tstruct ListNode *q = p->next;\n\t\t\tp->next = q->next;\n\t\t\tq->next = prev->next;\n\t\t\tprev->next = q;\n\t\t\tprev = p;\n\t\t\tp = p->next;\n\t\t}\n\t\treturn dummy.next;\n\t}\n};",
    "language": "cpp"
  },
  "node_id": "dailycode-c35251e8f87a49a7a4b5e149f073dea8",
  "license": "csdn.net",
  "created_at": 1637894158,
  "topic_link": "https://bbs.csdn.net/topics/600470117"
}