99问答网
所有问题
C语言:删除单链表的话是用free()吗?头结点释放了就行了吗?谢谢啊
如题所述
举报该问题
推荐答案 2012-10-10
当然要逐个free。因为每一个节点都是申请出来的,当用完了要释放。
不能只释放头节点,那样就是内存泄漏。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/eOBevXXtv.html
其他回答
第1个回答 2012-10-10
free 只是将分配的内存释放掉,如果你删除单链表的话,需要从头到尾的遍历一下单链表,针对每个单链表上的节点,进行free
本回答被网友采纳
第2个回答 2012-10-10
不是,要遍历整个链表把每个节点分别删除
相似回答
释放单链表
答:
链表和其他的数据结构不一样的地方就在于,它会占用内存,而且你用完之后,即使删除了某个节点,它也不会自己释放内存,
必须用free函数来释放
,就是free(*p),其中p是指向这个节点的指针,这个问题在java里面得到了解决,因为java里面带有一个自动的程序,就是垃圾清理器,它会定时在系统的内存中运行,...
C语言
中关于
链表的删除?
答:
所以,建表的过程即是每次为新结点分配内存;因此,释放空间的话,也要从头到尾,一个一个
结点的
释放,这样才能全部释放掉。这段代码
释放了
整个
链表
空间内存;while循环的作用是从头到尾释放后续结点,如果直接
free(
pHead)则后面的结点将无法找到,那么造成内存空间泄露。另外,你的while循环存在一个错误,...
单链表操作之--
删除
带头
结点的单链表
中所有值为X的元素
答:
删除带有
头结点
的
单链表
所有值为X的元素,算法主要思想如下: 用结点指针 p 从第一个 元素结点 开始遍历链表,若结点值为X,则进行删除操作,并
释放
被删结点空间。 因为是
单向链表
,所以仅 p 指针无法直接找到值为X结点的前驱,需要用一个 pre 指针,始终指向p的前驱,即 pre->next =...
带头节点循环
单链表
释放
答:
关于最后的
头结点
要不要
释放
根据严蔚敏的《数据结构(
C语言
版)》37页,对DestroyList(LinkList &L)的解释是:销毁线性
链表
L,L不再存在。我认为应该是要释放。参考代码如下:p=head->next;for(; p ;){ q=p->next;
free(
p);p=q;} free(head);
删除单链表的头结点
要怎么做?
答:
只要将头结点的指针域指向首元结点的下一个结点
就行了
,
释放
,就行了。例如,L
是头结点
的指针,next是结点的指针域。那就是L-next = s-next;delete s;这样就搞定了。
用
C语言
编写
程序:
清空一个带头
结点的链表
.
答:
//TODO1 生成
单链表的头结点
;return ok;} status destroylist(Linklist &L) //销毁单链表;{ while(L){ Linklist p=L->next;
free(
L);L=p;} //TODO2 return ok;} status listempty(Linklist &L) //判断单链表是否为空;{ if(L->next==NULL)return TRUE;else return FALSE...
如何
删除
不带头
结点的单链表的
首节点
答:
} *PNode,*LinkList;这个是不能删除只有一个头节点
链表的
;int del_head(LinkList L){ LinkList *p=L->next;if(!p)return -1;//调用处
释放头结点
L->d=p->d;L->next=p->next; /* *L= *p; */
free(
p); /* C */ /* C++ delete p;/ } return 0;} 如果只有一个头...
帮我用
C语言
写一个数据结构中
单链表的
建立和插入以及
删除
操作,就只写这...
答:
void create(struct Node *&L,int a[],int n) //创建,L是
链表头
,a是要插入数组,n是要插入元素个数 { List *s;int i;L=(List *)malloc(sizeof(List));L->next=NULL;for(i=0;i<n;i++){ s=(List *)malloc(sizeof(List));s->data=a[i];s->next=L->next;L->next=s;...
c语言
链表
操作:建立,显示及节点的插入,
删除
答:
free(
p);p=q;} L->next=NULL; //
头结点
指针域为空 return 1;} int ListEmpty(LinkList L){ // 初始条件:线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE if(L->next) // 非空 return 0;else return 1;} int ListLength(LinkList L){ // 初始条件:线性表L已...
大家正在搜
单链表结点删除
c语言单链表的排序
用c语言怎么创建一个单链表
c语言实现单链表的查找
单链表的删除算法
删除单链表某个节点
在单链表中要删除某一节点
C语言复制单链表
C语言什么是链表
相关问题
C语言链表每个节点最后都得free掉吗?还是只用free掉头...
C语言中如何用free清除一串链表
C语言中关于链表的删除?
c语言带空头结点的单链表删除 free(p)后为什么还要p=...
C语言如何删除链表头节点?
C语言里用数组存指针需要释放(free)吗?
c语言链表删除节点 不用free的后果
c语言中free(q)如果q是一个链表的头指针,那么效果是将...