写法一: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掉。
两个写法区别就是一个是在主函数中调用函数,另一个是直接在主函数里面进行操作,对于你这小问题两者都行,但大一点问题,比如学生信息管理系统,第一种方法比较好。
- 1 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消