#include<stdio.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
typedef int ElemType,Status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList,**LinkListP;
LinkList L;
LNode *p;
Status InitList(LinkListP L);
Status CreatList_H(LinkListP L,int n);
int main()
{
int n;
scanf("%d",&n);
CreatList_H(&L,n);
p=(LNode *)malloc(sizeof(LNode)); //free(p)后二次动态分配内存
p=L->next;
for(int i=0;i<n;i++)
{
printf("%d\n",p->data);
p=p->next;
}
return 0;
}
Status InitList(LinkListP L)
{
*L=(LinkList)malloc(sizeof(LinkList));
(*L)->next=NULL;
return OK;
}
Status CreatList_H(LinkListP L,int n)
{
InitList(L);
for(int i=0;i<n;i++)
{
p=(LNode *)malloc(sizeof(LNode));
scanf("%d",&(p->data));
p->next=(*L)->next;
(*L)->next=p;
}
free(p);p=NULL; //删除此行链表正确打印
return OK;
}
本人C关于内存方面的知识掌握得不是很牢固,望各位能指出的我的问题,谢谢!