C语言中链表如何快速释放所有节点?

C语言中链表如何快速释放所有节点?

第1个回答  2010-12-14
做一个循环
while(p!=NULL)
{
free(p);
p=NULL;
}
第2个回答  推荐于2016-06-23
兄弟,用心学吧 。这只是算法。你自己去分析一下。
#include <stdio.h>

typedef int ElemType;

struct LNode
{
ElemType data;
LNode *next;
};
struct LinkList
{
LNode *Head;
};
int LinkList::ListDelete_End( ElemType& e )
{
LNode *p = Head;

if ( p->next==NULL )
{
printf("删除位置错误!");
return 0;
}
else if ( p->next!=NULL && p->next->next==NULL )
{
p = p->next;
free p;
Head->next = NULL;
return 0;
}//---------------用于删除只有一个数据的情况

while ( p->next->next!=NULL )
{
p = p->next;
}

free p;
p = NULL;
return 0;
}

int LinkList::ListDelete_Head( ElemType& e )
{
LNode *p = Head;
int j = 0;

if ( p->next==NULL )
{
printf("删除位置错误!");
exit -1;
}
p = p->next;
Head->next = p->next;
free p;
return 0;
}本回答被提问者和网友采纳
相似回答