Это показывает ошибку ошибки сегментации при выполнении этого кода - PullRequest
0 голосов
/ 29 марта 2019

Я написал функцию вставки, она работает должным образом, а затем я написал функцию поворота (связанный список). Этот код проходит некоторые тестовые случаи. Но некоторые тестовые случаи могут потерпеть неудачу. Он показывает ошибку ошибки сегментации, когда я пытаюсьзапустить этот код.

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 голосов
/ 29 марта 2019

Если у вас есть функция extern, вы должны проверить все аргументы. В вашем случае head_ref может быть НЕДЕЙСТВИТЕЛЬНЫМ, поэтому:

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

И здесь будет ошибка: while(k--), потому что вы пытаетесь получить свойство в (возможно) NULL. Должно быть while(k-- && temp != NULL).

А переменные должны называться в качестве их свиньи, так что же делает k? ;)

Ps. Если у вас нет видимого модификатора (статический - приватный, extern - публичный), то по умолчанию используется extern.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...