我正在学习C中的链表。我不熟悉使用传递引用来操作链表。现在我知道我在这个节目中做了一些非常愚蠢的事情。这个程序创建一个列表,然后基本上返回特定值(节点的数据)的实例数。我在main!的每个语句之前都会出现这样的错误:"预期声明说明符"!。
怎么了?
#include<stdio.h>
#include<malloc.h>
struct list {
int number;
struct list *next;
};
typedef struct list node;
void create(node *);
int count(node **,int);
main()
int key,this_many;
node *head;
head = (node *)malloc(sizeof(node));
create(head);
printf("Which number?n");
scanf("%d",&key);
this_many = count(&head,key);
printf("%d timesn",this_many);
return 0;
}
void create(node *list) {
printf("Enter a number -999 to stopn");
scanf("%d",&list->number);
if(list->number == -999) {
list->next = NULL;
}
else {
list->next = (node *)malloc(sizeof(node));
create(list->next);
}
}
int count(node **addr_list,int key) {
int count = 0;
while(*addr_list != NULL) {
if((*addr_list)->number == key) {
count++;
}
*addr_list = (*addr_list)->next;
}
return(count);
}
问题:
- 您没有指定返回类型
main
- 您没有
{
来启动main
的作用域
将以main
开头的行更改为:
int main()
{
int key,this_many;
node *head;
head = (node *)malloc(sizeof(node));
create(head);
printf("Which number?n");
scanf("%d",&key);
this_many = count(&head,key);
printf("%d timesn",this_many);
return 0;
}