一、题目:
描述
将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表
如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样
你不能更改节点中的值,只能更改节点本身。
要求空间复杂度 O(1)
例如:
给定的链表是1→2→3→4→5
对于 k=2, 你应该返回 2→1→4→3→5
对于 k=3, 你应该返回 3→2→1→4→5
二、输入输出示例:
三、代码:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
ListNode *reverse(ListNode *head,ListNode *tail)
{
ListNode *p1,*p2,*p3;
p1 = NULL;
p2 = head;
p3 = head->next;
while(p2 != tail){
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p2->next;
}
return p1;
}
class