簡體   English   中英

C鏈表傳遞列表作為函數的參數

[英]C linked list passing list as argument to the function

我是鏈表的新手,但有一個我找不到的錯誤。 我有一個填充有數字的鏈接列表,我將其作為參數發送給函數search_tnode 如果函數找到了我要搜索的編號,則返回時,我可以使用以該編號開頭的新列表。 如果函數沒有找到它返回的數字,則在main中我有一個空列表,而我想擁有作為參數發送的原始列表。 我該如何實現?

主要:

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;
}

如果調用該函數並在列表中找到一個節點,則將分配給列表頭的那個節點返回,從而失去該節點之前的所有內容。 像這樣松散的節點很可能會在程序中引起內存泄漏。

我建議進行兩個更改來解決此問題:首先分配給其他變量,其次,如果未找到任何節點,則返回NULL (這是習慣做法),然后進行檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM