1 题目及要求
1.1 题目描述
反转单链表的前k个结点
解题思路:
每次将旧链表的头结点指向下一个结点的下一个结点,并把下一个结点掉到最前面。
2 解答
2.1 代码
ListNode *reverse_front_k_node(ListNode *node, int k) {
if (!node) return NULL;
assert(k>=1);
int cnt=0;
while(node){
++cnt;
node=node->next;
}
if(k>cnt) k=cnt;
ListNode *p = node->next;
ListNode *newHead = node;
for(int i=1;i<k;++i) {
node->next = p->next;
p->next = newHead;
newHead = p;
p = node->next;
}
return newHead;
}