Ошибка сегментации в связанных списках в C - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь сохранить переменные в узле связанного списка. Пример, который мне дали, был

int main() {
   struct NODE * head = NULL;
   int x, newData;
   for(x=0; x<10; x++) head = addNode(head, newData); // newData scanf’d in loop, not shown.
      }
struct NODE* addNodes(struct NODE *ptr, int someData) {
   struct NODE *temp = (struct NODE *) malloc(sizeof(struct NODE));
   if (temp == NULL) return NULL; 
   temp->data = someData;
   if (ptr == NULL) 
   temp->next = NULL;
   else
   temp->next = ptr; 
   return temp; 
   }
}

Чтобы изменить его для моих целей, я бы взял только 2 целых числа в качестве входных данных с глобальной переменной head, т.е.

struct Set {
        int a;
        int b;
        struct Set *next;
};

struct Set *head = NULL;

int addSet(int aa, int bb){
        struct Set *ptr = head; //copy of head variable since I need to keep the head variable
        struct Set *temp = (struct Set*) malloc(sizeof(struct Set));
        if(temp == NULL) return -1;
              temp -> a = aa;
              temp -> b = bb;
        if(ptr == NULL){}
              temp -> next = NULL;
        } else {
                temp -> next = ptr;
        }
}
void main (){
    addSet(2,4);
}
        return 0;
}

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

Есть предложения?

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