我有一个程序,正在寻找一个总数和什么是中间的数字在一个链表。我的问题是为什么它不打印出这些值?
代码如下:
int count(list values){
if(values == NULL)
return 0;
else
return 1 + count(values->next);
}
void middle(struct node *head){
int count = 0;
struct node *mid = head;
while (head != NULL){
if(count & 1)
mid = mid->next;
count++;
head = head->next;
}
}
void traverse(list values){
if(values->next)
printf("n# of the values: %.1f% nMiddle: %.1f%n", count, middle);
}
int main(int argc, char *argv[]){
FILE *input = stdin;
list values = readNumbers(input);
traverse(values);
return 0;
}
很难知道从哪里开始。我真不知道你到底想干什么。
但是让我们看看这一行:
printf("n# of the values: %.1f% nMiddle: %.1f%n", count, middle);
count
和middle
是函数,但这里没有调用这些函数。你只是把这些函数的地址传递给printf()
,它不知道这些是函数。您需要在函数名称(count(args)
和middle(args)
)之后包含圆括号,以便调用这些函数。
printf("n# of the values: %.1f% nMiddle: %.1f%n", count, middle);
count
应该接收一个参数(list
)。编译器将不带形参的count
和middle
视为函数指针。
还要注意middle
是void
函数,所以你到底想要它打印什么?