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

写法一:
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 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);
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;
}

慕妹3146593
浏览 136回答 1
1回答

PIPIONE

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