📅  最后修改于: 2023-12-03 15:07:25.338000             🧑  作者: Mango
在编写程序时,经常需要对给定列表进行一些操作,例如反转、排序等。本文将介绍如何反转给定链接列表中偶数位置的所有节点的顺序。
给定一个链表,反转给定链接列表中偶数位置的所有节点的顺序。
考虑一个链表 1 -> 2 -> 3 -> 4 -> 5
,将偶数位置的节点反转后得到 1 -> 4 -> 3 -> 2 -> 5
。
该问题可以通过迭代的方式解决。具体步骤如下:
prev
、curr
、next
来分别记录前一个节点、当前节点和后一个节点。prev
为 NULL
,curr
为链表头节点。curr
指向偶数位置节点时,反转该节点和前一个节点,更新变量 prev
、curr
、next
。struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseEvenNodes(ListNode* head) {
ListNode* prev = NULL;
ListNode* curr = head;
while (curr != NULL && curr->next != NULL) {
ListNode* next = curr->next->next;
curr->next->next = curr;
if (prev != NULL) {
prev->next = curr->next;
} else {
head = curr->next;
}
curr->next = next;
prev = curr;
curr = next;
}
return head;
}
本文介绍了如何反转给定链接列表中偶数位置的所有节点的顺序,以及实现该功能的代码。该问题可以通过迭代的方式解决。