将变量分配给链表中的下一项
Assign a variable to the next item in a linked list
我无法将用户输入的变量分配给链表中的 "next" 变量。 (即 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
非常感谢任何帮助。
您正在尝试使用未初始化的指针。 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
这不是语法错误,而是运行时错误。如果是语法错误,编译器会告诉你,但不会 compile/run.
我无法将用户输入的变量分配给链表中的 "next" 变量。 (即 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
非常感谢任何帮助。
您正在尝试使用未初始化的指针。 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
这不是语法错误,而是运行时错误。如果是语法错误,编译器会告诉你,但不会 compile/run.