C链表传递列表作为函数的参数

时间:2014-08-07 11:39:45

标签: c linked-list

我是链接列表的新手,我有一个我找不到的错误。我有单个链表填充了数字,我作为参数发送到函数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;
}

1 个答案:

答案 0 :(得分:3)

如果调用该函数并在列表中找到一个节点,则返回分配给列表头的节点,从而丢失该节点之前的所有内容。像这样松散的节点很可能会在你的程序中引入内存泄漏。

我建议进行两项修改来解决这个问题:首先分配给其他变量,其次如果没有找到任何节点,则返回NULL(这是惯例),并检查它。