Я новичок в C и попытаюсь узнать, как реализовать C в связанном списке. Я действительно смущен, почему я не могу получить доступ к myList в главной функции? потому что, когда я пытаюсь сделать myList->data
, это ошибка сегментации. Я думаю, что есть некоторая ошибка в моей функции addtohead? Ниже мой код:Ошибка сегментации в связанном списке с помощью C
#include <stdio.h>
#include <stdlib.h>
typedef struct NODE{
int data;
struct NODE *next;
}node;
node * myList;
node * addToHead(node*, int);
void printList();
int main(){
myList = NULL;
int input;
while (scanf("%i",&input) == 1){
addToHead(myList, input);
printf("%d \n", myList->data);
}
printf("My List:\n");
printList(myList);
return 0;
}
node* addToHead(node* head, int newData){
node *temp = (node *)malloc(sizeof(node));
temp -> data = newData;
temp -> next = NULL;
if(head != NULL){
temp -> next = head;
}
head = temp;
return head;
}
void printList(node* head){
node *temp = head;
while(temp != NULL){
printf("%d ", temp->data);
temp = temp -> next;
}
printf("\n");
}
Вы ничего не сделали с возвращением функция в стоимость. Аргумент 'head' является * копией * той, что находится в основном. Попробуйте 'myList = addToHead (myList, input);'. –
'head' в' addToHead' имеет локальную область. – LPs