0
I m new ds。我正在嘗試這個問題 - 給定一個鏈表,寫一個函數以有效的方式反轉每個備用k節點(其中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;
}
你檢查覈心轉儲到針點內存故障的位置? – Aftnix 2012-08-10 14:27:49
有利於調試的一件事是使用有意義的變量名稱。 「func」,「list1」和「list2」這兩個名稱並不能很好地描述這些變量的用途。 – 2012-08-10 15:55:17
如果列表節點的數量不是k的倍數,該怎麼辦? – Armali 2014-04-08 12:25:57