【发布时间】:2021-02-27 18:01:48
【问题描述】:
您好,我正在尝试制作一个映射函数,它接受一个链表并接受每个整数并将其相乘,所以从当前列表中我期望 1、4、9、16、25。我已经制作了平方函数和将它分配给一个变量并尝试通过 map 函数传递列表 X 和函数,我的错误是什么?
#include <stdio.h> /* printf */
#include<stdlib.h> /* free */
typedef struct node
{
int value;
struct node* next;
} node;
node SENTINEL = {0, 0};
node * make_node(int v, node * q)
{
node* p = (node*) malloc(sizeof(node));
p->value = v;
p->next = q;
return p;
}
int square(int x)
{
return x * x;
}
int map(node* X, int x)
{
if (X == NULL)
{
printf("List is empty");
return 0;
}
while (X != &SENTINEL)
{
x = sf(X->value);
printf("%d,", x);
X = X->next;
}
}
int main(void)
{
int (*sf)(int);
node* X =
make_node(1,
make_node(2,
make_node(3,
make_node(4,
make_node(5, &SENTINEL)
)
)
)
);
sf = square;
int x;
x = map(X);
free(X);
return 0;
}
【问题讨论】:
-
map中的x参数有什么意义?将指针传递给square函数会更有意义。 (另外,你没有在那里传递参数,所以我看不到它是如何编译的) -
sf,在map中使用,这里没有声明。 -
dint 你得到这个
x = map(X);的任何编译错误,正如定义所说的int map(node* X, int x) -
你的编译器应该是complaining a lot关于这段代码。为什么不仔细阅读错误并修复它们?我认为这应该被关闭,因为它需要更多的关注而不是“它不起作用”。
-
为变量命名
X和x对您来说可能很清楚,但对于世界其他人来说却不是。
标签: c recursion linked-list