gpt4 book ai didi

c - 反转每一个交替的 k 个节点

转载 作者:行者123 更新时间:2023-11-30 17:58:52 25 4
gpt4 key购买 nike

我是新 DS。我正在尝试这个问题 - 给定一个链表,编写一个函数以有效的方式反转每个交替的 k 个节点(其中 k 是函数的输入)。给出你的算法的复杂度。我的代码给了我段错误。救命!

struct node* func(struct node* head, int k)
{
struct node* run, *list1;
run =head->next;
list1=head;

int count =0;

struct node *list2=NULL;

while(list1!=NULL && count++<k)
{
list1->next=list2;
list2=list1;
list1=run;
run=list1->next;
}

head=list2;

while(list2->next!=NULL && list2!=NULL)
list2=list2->next;

list2->next=list1;

while(list1!=NULL && count++<k-1)
list1=list1->next;

if(list1!=NULL)
list1->next=func( head, k);
return head;
}

最佳答案

struct node* func_aux(struct node* head, struct node* rev, int k){
struct node* next;
if(k == 0 || head == NULL)
return rev;
next = head->next;
head->next = rev;
return func_aux(next, head, --k);
}

struct node* func(struct node* head, int k){
struct node* kth_node;
int i=0;
for(kth_node=head;kth_node;kth_node=kth_node->next,++i){
if(k==i)break;
}
return func_aux(head, kth_node, k);
}

关于c - 反转每一个交替的 k 个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11900735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com