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