程序运行结束后,如何释放运行过程中用malloc开辟的空间? 20
简单的说:#include<stdio.h>#include<stdlib.h>#defineERROR0#defineOK1typedefStatusint;typed...
简单的说:
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef Status int;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
void InitList_L(LinkList *L);//链表初始化
void CreatList_L(LinkList *L, int n);//逆序建立链表,输入数据
void PrintList_L(LinkList L);//打印输出链表
void InitList_L(LinkList *L)
{
*L = (LinkList)malloc(sizeof(LNode));
if ((*L) == NULL)
{
exit(ERROR);
}
(*L)->next = NULL;
printf("初始化成功!\n");
}
void CreatList_L(LinkList *L, int n)
{
LinkList p;
while (n --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", & p->data);
p->next = (*L)->next;
(*L)->next = p;
}
}
void PrintList_L(LinkList L)
{
LinkList p;
for (p = L->next; p != NULL; p = p->next)
{
printf("%4d", p->data);
}
printf("\n");
}
Status main(void)
{
int n, e = 0;
LinkList La, Lb;
LinkList p;
InitList_L(&La);
InitList_L(&Lb);
printf("请输入要在La中存放数据的个数:");
scanf("%d", &n);
printf("请倒序输入要存入La的%d个元素:\n", n);
CreatList_L(&La, n);
printf("请输入要在Lb中存放数据的个数:");
scanf("%d", &n);
printf("请倒序输入要存入Lb的%d个元素:\n", n);
CreatList_L(&Lb, n);
printf("La中元素为:\n");
PrintList_L(La);
printf("Lb中元素为:\n");
PrintList_L(Lb);
return 0;
}
比如这段程序,要求在程序运行结束,return 0;之前把之前建立链表所开辟的空间释放掉,怎么操作?
这么做行吗?有没有其他方法?
while (La != NULL)
{
p = La;
La = La->next;
free(p);
} 展开
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef Status int;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
void InitList_L(LinkList *L);//链表初始化
void CreatList_L(LinkList *L, int n);//逆序建立链表,输入数据
void PrintList_L(LinkList L);//打印输出链表
void InitList_L(LinkList *L)
{
*L = (LinkList)malloc(sizeof(LNode));
if ((*L) == NULL)
{
exit(ERROR);
}
(*L)->next = NULL;
printf("初始化成功!\n");
}
void CreatList_L(LinkList *L, int n)
{
LinkList p;
while (n --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", & p->data);
p->next = (*L)->next;
(*L)->next = p;
}
}
void PrintList_L(LinkList L)
{
LinkList p;
for (p = L->next; p != NULL; p = p->next)
{
printf("%4d", p->data);
}
printf("\n");
}
Status main(void)
{
int n, e = 0;
LinkList La, Lb;
LinkList p;
InitList_L(&La);
InitList_L(&Lb);
printf("请输入要在La中存放数据的个数:");
scanf("%d", &n);
printf("请倒序输入要存入La的%d个元素:\n", n);
CreatList_L(&La, n);
printf("请输入要在Lb中存放数据的个数:");
scanf("%d", &n);
printf("请倒序输入要存入Lb的%d个元素:\n", n);
CreatList_L(&Lb, n);
printf("La中元素为:\n");
PrintList_L(La);
printf("Lb中元素为:\n");
PrintList_L(Lb);
return 0;
}
比如这段程序,要求在程序运行结束,return 0;之前把之前建立链表所开辟的空间释放掉,怎么操作?
这么做行吗?有没有其他方法?
while (La != NULL)
{
p = La;
La = La->next;
free(p);
} 展开
5个回答
展开全部
就是这样。
分配的时候是一个个接点分配的,就要一个个释放。
分配的时候是一个个接点分配的,就要一个个释放。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在最后面加free()用来释放申请的空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
毫无疑问可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询