【发布时间】:2018-08-26 13:11:27
【问题描述】:
我有一个没有哨兵的非循环列表,我想复制它的每个节点。例如,我有 7,5,12,16,我想拥有:7,7,5,5,12,12,16,16 但我无法创建它。下面是我复制节点的功能代码(程序的其他部分是正确的)。
int duplicate_list(listT *list_head) {
listT *current, *new_node;
for(current = list_head; current != NULL; current = current->next,counter++) {
new_node = (listT *)malloc(sizeof(listT));
if(new_node == NULL) {
printf("problem in new_node\n");
free(new_node);
exit(-1);
}
new_node->data = current->data;
new_node->next = current;
}
return(1);
}
有人可以帮我吗?
【问题讨论】:
-
不要将错误消息打印到
stdout。 -
free(NULL);是空操作。 -
counter未声明。
标签: c list pointers malloc nodes