【发布时间】:2012-08-10 11:28:58
【问题描述】:
我是新的 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;
}
【问题讨论】:
-
您是否检查过核心转储以确定内存故障的位置?
-
使用有意义的变量名可以极大地方便调试。名称
func、list1和list2并不能很好地描述这些变量的用途。 -
list节点数不是k的倍数怎么办?
标签: c data-structures segmentation-fault