C 扫描链接列表的输入
我是个编程新手。我写了一个函数来扫描链表的输入。但它不起作用。有人能帮我找到问题所在吗C 扫描链接列表的输入,c,linked-list,C,Linked List,我是个编程新手。我写了一个函数来扫描链表的输入。但它不起作用。有人能帮我找到问题所在吗 ListNode *BuildList() { char discard; ListNode *list,*list2=NULL; list = (ListNode*)malloc(sizeof(struct ListNode)); if ((scanf("%d%1[^\n]s", &list->val, &discard)) == 2) {
ListNode *BuildList() {
char discard;
ListNode *list,*list2=NULL;
list = (ListNode*)malloc(sizeof(struct ListNode));
if ((scanf("%d%1[^\n]s", &list->val, &discard)) == 2) {
list->next = BuildList();
printf("%d ", list->next->val);
}
else
{
list->next = NULL;
}
return list;
}
ListNode定义为
struct ListNode {
int val;
ListNode *next;
};
谢谢大家! 我不得不接受您的代码,并尝试重现您遇到的错误。 您的代码看起来很好,只是由于无法推断
ListNode
的类型而导致编译时错误。
我发现了我认为你是的典型错误:
test.c:11:5: error: unknown type name ‘ListNode’
ListNode *list,*list2=NULL;
有两种解决方案可供选择:
第一,修改结构定义如下。通过这种方法,您的代码工作起来非常有魅力
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
第二,保留结构的定义,但在每个结构变量声明之前加上关键字struct
。例如;而不是ListNode*list,*list2=NULL
dostruct ListNode*list,*list2=NULL代码>
我尝试运行您的代码,示例输入和生成的输出如下。我希望这就是你期望你的功能的表现
1 2 3 4 5 6 7 8 9 // <- input
9 8 7 6 5 4 3 2 // <- output
123456789/我不得不接受您的代码,并尝试重现您遇到的错误。
您的代码看起来很好,只是由于无法推断ListNode
的类型而导致编译时错误。
我发现了我认为你是的典型错误:
test.c:11:5: error: unknown type name ‘ListNode’
ListNode *list,*list2=NULL;
有两种解决方案可供选择:
第一,修改结构定义如下。通过这种方法,您的代码工作起来非常有魅力
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
第二,保留结构的定义,但在每个结构变量声明之前加上关键字struct
。例如;而不是ListNode*list,*list2=NULL
dostruct ListNode*list,*list2=NULL代码>
我尝试运行您的代码,示例输入和生成的输出如下。我希望这就是你期望你的功能的表现
1 2 3 4 5 6 7 8 9 // <- input
9 8 7 6 5 4 3 2 // <- output
123456789//欢迎来到堆栈溢出。“不起作用”不是一个有用的问题陈述。请阅读此1)%d%1[^\n]s“
错误。如果(scanf(%d)”,&list->val)==1{scanf(%*[^\n]);scanf(%*c”);…
@CoolGuy,请尝试如果此时输入的格式不清楚。欢迎使用堆栈溢出!“不工作”不是一个有用的问题语句。请阅读此1)%d%1[^\n]s“
错误。如果(scanf(“%d”),&list->val)==1{scanf(“%*[^\n]”);scanf(“%*c”);…
@CoolGuy此时输入的格式不清楚。