Я пишу функцию, которая берет начальный указатель связанного списка и добавляет новый узел с предоставленным значением. Список, который я передаю, также может быть пустым. Но когда я пытаюсь запустить программу, я получаю ошибку сегментации 11. Может ли кто-нибудь помочь мне узнать, в чем я ошибаюсь?Ошибка сегментации с использованием gcc on iMac
void appendList(struct list* list, int value) {
struct list* ptr = list;
struct list* temp = (struct list*)malloc(sizeof(struct list));
temp->val = value;
temp->next=NULL;
if (ptr==NULL) {
ptr = temp;
return;
}
while ((ptr->next)!=NULL) {
ptr = ptr->next;
}
ptr->next = temp;
}
Вызов как:
int main()
{
struct list* result;
result = (struct list*)malloc(sizeof(struct list));
appendList(result,4);
appendList(result,2);
appendList(result,5);
return 0;
}
Если аргумент 'list' равен' NULL', функция не меняет его. Заставьте его возвращать указатель, 'struct list * appendList (...'. –
Можете ли вы показать код, который используете для вызова функции и отслеживания вашего первого узла? – Bill
Да Билл отлично понимает. Спасибо за помощь. – zarrion