[英]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.