运行此代码时显示分段错误错误

时间:2019-03-29 13:09:58

标签: c

我写了insert函数,它正常工作,然后写了rotate函数(链表)。这段代码通过了一些测试用例,但是某些测试用例可能会失败,在我尝试时显示了段错误运行此代码。

void rotate(struct node **head_ref, int k)
{
    struct node *temp=*(head_ref);
    struct node *t;
    struct node *start;
    start=*(head_ref);
   while(k--)
   {
       t=temp;
      temp=temp->next;
   }
   t->next=NULL;
   *head_ref=temp;
   while(temp->next!=NULL)
   {
       temp=temp->next;
   }
   temp->next=start;
}

1 个答案:

答案 0 :(得分:0)

如果具有外部函数,则必须验证每个参数。 在您的情况下,head_ref可以为NULL,因此:

if (head_ref != NULL)
{
...
}

错误将在这里:while(k--),因为您尝试在(可能的)NULL上获取属性。 应该是while(k-- && temp != NULL)

变量应该命名为变量的名称,那么k在做什么呢? ;)

Ps。如果您没有可见的修饰符(静态-私有,外部-公共),则默认情况下该功能为外部。