Я пытаюсь сохранить переменные в узле связанного списка. Пример, который мне дали, был
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, не копируя его в другую переменную.
Есть предложения?