为了账号安全,请及时绑定邮箱和手机立即绑定

程序写法一哪里有问题? 写法二是不是就可以释放所有内存了?

程序写法一哪里有问题? 写法二是不是就可以释放所有内存了?

慕妹3146593 2022-08-03 19:15:55
写法一:int Empty(List *L)//判空{return L->size=0;}void Clear(List* L)//清表{while(!Empty(L))Pop_front(L);L->size=0;}void Free(List* L)//撤销所有节点空间{Clear(L);free(L->head);free(L->tail);}#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<math.h>typedef int Type;struct Nodestruct Node* next;Type data;struct Node* prev;};typedef struct Node Node;typedef struct{Node* head;int size;Node* tail;}List;int main(){List L;Init(&L);//中间还有对链表的一系列操作如前插,前删等Free(&L);return 0;}写法二:#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<math.h>typedef int Type;struct Node{struct Node* next;Type data;struct Node* prev;};typedef struct Node Node;typedef struct{Node* head;int size;Node* tail;}List;int main(){List L;Init(&L);//中间还有对链表的一系列操作如前插,前删等free(L.tail);free(L.head);L.head=NULL;L.tail=NULL;L.size=0;return 0;}
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

写法一主函数少了clear调用,写法2好像不能全部释放内存吧,L你最后只是设置为空,但没有delete掉。
两个写法区别就是一个是在主函数中调用函数,另一个是直接在主函数里面进行操作,对于你这小问题两者都行,但大一点问题,比如学生信息管理系统,第一种方法比较好。

查看完整回答
反对 回复 2022-08-08
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号