#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應該沒區別吧?
關于c語言實現鏈表內存的問題
慕粉1600176492
2017-04-17 22:21:17