我是编程的新手。我写了一个函数来扫描链接列表的输入。但它不起作用。任何人都可以帮我找到问题所在吗?
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;
};
谢谢!
答案 0 :(得分:0)
我不得不接受您的代码并尝试重现您遇到的错误。
您的代码看起来很好,除了它提供编译时错误,因为它无法推断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;
执行struct ListNode *list,*list2=NULL;
我尝试运行您的代码,示例输入和生成的输出如下。我希望这是你期望你的功能表现的方式。
1 2 3 4 5 6 7 8 9 // <- input
9 8 7 6 5 4 3 2 // <- output