Я начал изучать программирование C несколько дней назад в книге «Программирование на C», и у меня есть предварительное знание Java. Вставка узла в связанный список очень легко в Java, но я подумал, что если я мог бы сделать то же самое в С. Итак, я придумал эту программу,Ошибка сегментации при попытке вставить узел в связанный список
#include "node.h"
void insertEntry(struct node* root, struct node* after)
{
struct node* first = root;
while(first != (struct node*) 0)
{
if(first->value == after->value)
{
struct node ins;
ins.value = 3456;
ins.next = first->next;
first->next = &ins;
}
first = first->next;
}
}
int main(void)
{
struct node n1, n2, n3;
struct node* list_pointer = &n1;
n1.value = 100;
n1.next = &n2;
n2.value = 200;
n2.next = &n3;
n3.value = 300;
n3.next = (struct node*) 0;
void insertEntry(struct node* root, struct node* after);
while (list_pointer != (struct node*) 0)
{
printf("%i\n", list_pointer->value);
list_pointer = list_pointer->next;
}
printf("\n");
list_pointer = &n1;
insertEntry(list_pointer, &n2);
while (list_pointer != (struct node*) 0)
{
printf("%i\n", list_pointer->value);
list_pointer = list_pointer->next;
}
return 0;
}
node.h
#include <stdio.h>
struct node
{
int value;
struct node* next;
};
В основном, эта программа принимает указатель на первый элемент связанного списка и указатель на элемент, после которого он должен быть вставлен, и вставляет новый узел после этого узла.
Но когда я запускаю это, моя программа падает, и я не могу найти, где и почему эта ошибка возникает. Я просмотрел код в java и попытался реализовать его в C.
Спасибо.
Вы использовали отладчик как 'gdb' найти именно там, где происходит ошибка сегментации? –