#include<stdio.h>
#include<stdlib.h>
#define N 6
int main()
{
typedef struct st
{
int num;
struct st *next;
}node;
node *p, *q, *h;
p = (node *)malloc(sizeof(node));
h = p;
for (int i = 0; i < N; i++)
{
p->num = i + 0;
q = p; //保存已完成的数据的地址
if(i==N-1)
{
p->next=NULL;break;
}
p = (node *)malloc(sizeof(node));//开辟新的地址
q->next = p;//让完成数据的地址和新的地址关联
}
p = h;
while (p)
{
printf("%d\n", p->num);//输出当前节点的数据
q = p->next; //更新到下一节点的地址
p = q; //更新下一节点
}
p = h;
while(p)
{
q=p->next;
free(p);
p = q;
}
free(h);
system("pause");
return 0;
}请各位大神帮忙看下,是否让申请的内存充分利用,释放的时候应该都释放了吧?在这个代码里我没有用到 h->next ,我觉得反正 h 这个领头的也不存数据, 用h 和h->next应该没区别吧?
添加回答
举报
0/150
提交
取消