创建了一个链表,但不知道如何来释放分配的内存
程序代码:#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct student
{
int date; //数据域
struct student * pNext; //指针域
}* PNODE, NODE;
//函数前置声明
PNODE create_list(void);
void traverse_list(PNODE pHead);
//主函数
int main(void)
{
PNODE pHead = NULL; //定义一个指针变量
pHead = create_list(); //用来接受链表的头指针
traverse_list(pHead); //遍历输出链表中的每一个节点中数据域中的数据
return 0;
}
//创建链表
PNODE create_list(void)
{
int len; //节点的个数
int temp = 0; //临时存放用户输入的节点中数据域的数据
int i;
PNODE pHead = (PNODE)malloc(sizeof(NODE)); //创建头指针
if (NULL == pHead)
{
printf("内存分配失败,程序退出!\n");
exit(-1);
}
PNODE pTail = pHead; //定义一个指针变量,并赋值
pTail->pNext = NULL; //pTail 尾节点,此节点的指针域为空
printf("请输入节点的个数:\n");
printf("len = ");
scanf("%d", &len);
for(i = 0; i < len; i++)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE)); //生成节点,节点的个数等于用户输入的个数,即len的值
if(NULL == pNew)
{
printf("内存分配失败,程序退出!\n");
exit(-1);
}
printf("请输入数值\n");
printf("temp = ");
scanf("%d", &temp); //输入节点数据域的值
pNew->date = temp; //把输入的值赋给节点的数据域中存放
//把生成的新的节点挂在pNew 后面
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
}
//对链表中的每个节点,遍历输出
void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext ;
while(NULL != p)
{
printf("%d\n", p->date );
p = p->pNext ;
}
return;
}
是不是只需要 释放 pHead 的内存 ?









