关于c语言实现链表内存的问题

#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应该没区别吧?

慕粉1600176492
浏览 1654回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP