我编写了代码,有人可以对其进行优化吗?如果你需要完整的代码然后评论,我会这样做。帮帮我。我这样做是因为我没有在线获取代码以递归方式执行此操作。
n reversekNode(n head,n pre,n frst,int i,int m){
if(head!=NULL){
if(i<m-1){
n nxt = head->next;
head->next = pre;
if(i==0)
frst = head;
return reversekNode(nxt,head,frst,i+1,m);
}else{
n nn = head->next;
head->next=pre;
if(head->next!=NULL){
frst->next = reversekNode(nn,head,NULL,0,m);
}
return head;
}
}
}
答案 0 :(得分:1)
我能想到的最简单的代码是递归反转列表中的第一个k
项目是
Node *reverseList(Node *a, Node *b, int k)
{
if (b == NULL || k <= 1)
return a;
Node *head = reverseList(b, b->next, k-1);
Node *temp = b->next;
b->next = a;
a->next = temp;
return head;
}
应该像这样调用
if (head != NULL)
head = reverseList(head, head->next, k);