From ac735d918b22ee025dddf7d3df038af5a5ba2b39 Mon Sep 17 00:00:00 2001 From: Guanzhong Pan Date: Sun, 2 Jan 2022 14:30:25 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=200024.=E4=B8=A4=E4=B8=A4?= =?UTF-8?q?=E4=BA=A4=E6=8D=A2=E9=93=BE=E8=A1=A8=E4=B8=AD=E7=9A=84=E8=8A=82?= =?UTF-8?q?=E7=82=B9.md=20C=E8=AF=AD=E8=A8=80=E9=80=92=E5=BD=92=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0024.两两交换链表中的节点.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/problems/0024.两两交换链表中的节点.md b/problems/0024.两两交换链表中的节点.md index 9b9c6689..f1bfa5b2 100644 --- a/problems/0024.两两交换链表中的节点.md +++ b/problems/0024.两两交换链表中的节点.md @@ -94,8 +94,21 @@ C: * struct ListNode *next; * }; */ +//递归版本 +struct ListNode* swapPairs(struct ListNode* head){ + //递归结束条件:头节点不存在或头节点的下一个节点不存在。此时不需要交换,直接返回head + if(!head || !head->next) + return head; + //创建一个节点指针类型保存头结点下一个节点 + struct ListNode *newHead = head->next; + //更改头结点+2位节点后的值,并将头结点的next指针指向这个更改过的list + head->next = swapPairs(newHead->next); + //将新的头结点的next指针指向老的头节点 + newHead->next = head; + return newHead; +} - +//迭代版本 struct ListNode* swapPairs(struct ListNode* head){ //使用双指针避免使用中间变量 typedef struct ListNode ListNode;