Присвоить переменную следующему элементу в связанном списке - PullRequest
0 голосов
/ 29 апреля 2018

У меня проблемы с назначением введенной пользователем переменной в следующую переменную в связанном списке. (то есть head-> next-> num = sum) Обычно включение узла в круглые скобки позволяет присвоить переменную одному из элементов в списке, но я не могу применить ту же логику к следующему элементу в списке. Я не уверен, является ли это синтаксической проблемой или распределением, но он сохраняет ошибки сегмента. Пример кода ниже того, о чем я говорю.

#include <stdio.h>
#include <stdlib.h>
typedef struct fib {
  long long num;

  struct fib *next;

} fib;
typedef void (*callback)(fib *point);
char menu();
void welcome();
void help();
void exitmssg();
void print(fib *head, callback f);
void display(fib *n);
fib *run(fib *head, int count);

void main() {
  long long num1, num2, sum;
  int count;
  callback disp = display;
  fib *head, *pointer, *append;
  welcome();
  head = malloc(sizeof(fib));
  pointer = malloc(sizeof(fib));
  printf("Please enter two starting fibonacci numbers:\n");
  scanf("%lli", &num1);
  scanf("%lli", &num2);
  (head->num) = num1;
  (head->next->num) = num2;
//((head->next)->num) doesn't work either

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 29 апреля 2018

Вы пытаетесь использовать неинициализированный указатель. head->next не инициализируется.

head = malloc(sizeof(fib));
pointer = malloc(sizeof(fib));
head->num = num1;
head->next = pointer;      // Now next points to something
head->next->num = num2;
pointer->next = NULL;      // This needs initialization too

И это не синтаксическая ошибка - это ошибка времени выполнения. Если это была синтаксическая ошибка, компилятор сообщит вам, и он не скомпилирует / запустит.

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...