创建了一个链表,但不知道如何来释放分配的内存
程序代码:
#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 的内存 ?