【发布时间】:2013-03-02 21:45:17
【问题描述】:
我已向每个节点添加数据(从 1.0 到 9.0 的双精度值)。现在我正在尝试访问每个数据以对其进行修改,以便每个节点中的双精度值都是负数(-1.0 到 -9.0):
void traverseList(struct List *list, void (*func) (void *)) {
struct Node *current = list->head;
while(current) {
func(current->data);
current = current->next;
}
}
void changeToNegative(void *data) {
double newData = *((double*)data) * -1.0;
data = &newData;
}
我用以下方式调用上述内容:
traverseList(&list, &changeToNegative);
traverseList(&list, &print);
但是,它仍然只打印出正值...我正在为数据重新分配一个新的内存位置,所以我不明白它如何仍然指向旧的内存位置。任何帮助表示赞赏!
【问题讨论】:
-
Node的声明是什么? -
结构节点 { void *data;结构节点*下一个; };
-
请举例说明您如何创建和使用您的
List。下面选择的解决方案是正确的,但不完整,因为您的问题缺少重要的细节,我们无法提供完整的答案。
标签: c pointers linked-list nodes