Ниже приведен простой сегмент кода в C, чтобы создать связанный список и распечатать все элементы, содержащиеся в списке.Простейший связанный список Создание и печать данных
Пользователь просят ввести целочисленные данные до тех пор, пока не будет введен ноль, который отмечает прекращение ввода пользователя; После сохранения данных в связанном списке программа печатает все элементы, хранящиеся в списке, а затем завершает свое выполнение.
Я не могу заставить ее работать, каждый раз, когда он дает «Сегментация ошибка» ошибка, пожалуйста, проверьте и скажите мне, где я неправильно (с помощью GCC 4.8.2)
Код:
struct node
{
int data;
struct node * next;
};
struct node * createLinkedList()
{
int x;
struct node * start;
start = NULL;
printf("Input 0 to end, Insert elements :\n");
for(scanf("%d", &x); x ;scanf("%d", &x))
{
struct node * temp = (struct node *) malloc(sizeof(struct node));
if (temp)
{
temp->data = x;
temp->next = NULL;
if(start == NULL) {
start = temp;
} else {
start->next = temp;
start = temp;
}
}
}
return start;
}
void printLinkedList(struct node * start)
{
if (start == NULL) {
printf("Linked List is empty!\n");
} else {
printf("\nPrinting Linked List : \n");
struct node * s;
s = start;
while(s != NULL)
{
printf("%d\n", s->data);
s = s->next;
}
}
}
int main(int argc, char const *argv[])
{
struct node * start;
start = NULL;
start = createLinkedList();
printLinkedList(start);
return 0;
}
Просто посмотрите на цикл for ... omg – Igor
изменил его на * while (x! = 0) * + добавил * scanf ("% d", & x) * в соответствующих местах; ** Нет изменений в O/p ** – cseav
Используйте свой дружественный отладчик neihbourhood (или gdb) и сообщите нам (и вам самим), какая строка генерирует исключение. Нам гораздо легче это сделать, чем нам, потому что у вас есть код, окружающая среда и т. Д. Уже перед вами. –