[英]How can I fix my code for clearing nodes in a linked structure
我之前曾問過類似的問題,但現在遇到了另一個問題。 你能看看嗎? 我試圖釋放在程序中創建的鏈接結構中的節點。 這是結構。
struct node {
unsigned x;
double y;
struct node *next;
};
typedef struct node Nodes, *This;
功能聲明
void freeNodes(Nodes *a);
void freeThis(This *);
功能freeNodes
:
void freeNodes(Nodes *a)
{ free(a);
print ("success");
}
功能freeThis
:
我不知道如何解決此問題,因此可以從整個鏈接列表中釋放節點。
void freeThis(This *p)
{
Nodes *tmp;
while (p != NULL)
{
(*tmp) = Nodes *p;
*p=(*p)->next;
freeNodes(tmp);
tmp = NULL;
}
}
嘗試這個
void freeThis(This *p){
Nodes *tmp;
if(!p) return;
while (*p != NULL){
tmp = *p;
*p=(*p)->next;
freeNodes(tmp);
}
}
正如我在評論中指出的那樣,我不會使用This
Type。 (對我來說)這使得了解正在發生的事情變得更加困難。 (我也不認為這會讓您更輕松,但是我對此可能是錯的。)
鑒於存在,那么:
void freeThis(This *p)
{
if (p != 0)
{
Nodes *tmp = *p;
*p = NULL;
while (tmp != NULL)
{
Nodes *next = tmp->next;
freeNodes(tmp);
tmp = next;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.