我是链接列表的新手,我有一个我找不到的错误。我有单个链表填充了数字,我作为参数发送到函数search_tnode
。如果函数找到了我正在搜索它的数字,那么我可以使用以该数字开头的新列表。如果函数没有找到它返回的数字,而且主要是我有
空列表,而我想要有我作为参数发送的原始列表。我怎样才能做到这一点?
主:
my_list = search_tnode(my_list,key);
功能:
struct t_node * search_tnode(struct t_node *start_time, unsigned long num){
struct t_node *p;
p = start_time;
while(p != NULL){
if(p->key == num){
return p;
}
p = p->next;
}
printf("Number not found %ld \n",num);
return start_time;
}
答案 0 :(得分:3)
如果调用该函数并在列表中找到一个节点,则返回分配给列表头的节点,从而丢失该节点之前的所有内容。像这样松散的节点很可能会在你的程序中引入内存泄漏。
我建议进行两项修改来解决这个问题:首先分配给其他变量,其次如果没有找到任何节点,则返回NULL
(这是惯例),并检查它。