将变量分配给链接列表中的下一个项目

时间:2018-04-29 02:20:39

标签: c linked-list allocation

我无法将用户输入的变量分配给" next"链表中的变量。 (即head-> next-> num = sum)通常将节点括在括号中可以将变量分配给列表中的一个项目,但我似乎无法将相同的逻辑应用于下一个项目在列表中。我不确定它是否是语法问题或分配,但它会保留seg faulting。以下是我正在谈论的代码示例。

#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 :(得分:0)

您正在尝试使用未初始化的指针。 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