内存报错问题,是否有一个节点是空的啊
#include"stdio.h"#include "malloc.h"
#include "stdlib.h"
#define ok 1
#define NULL 0
typedef int Status;
typedef int Elemtype;
typedef struct lnode{
Elemtype a;
struct lnode *next;
}lnode;
lnode *creat(void)
{
lnode *head ,*p;
head=(lnode *)malloc(sizeof(lnode));
p=head;
p->next=(lnode *)malloc(sizeof(lnode));
p->a=2;
p=p->next;
p->next=(lnode *)malloc(sizeof(lnode));
p->a=4;
p=p->next;
p->next=(lnode *)malloc(sizeof(lnode));
p->a=31;
p->next=NULL;
return head;
}
//********************
Status destory (lnode *l){
lnode *p=l,*q=l->next;
for( ;p!=NULL; q=q->next)
{
free(p);
p=q;
}
return ok;
}
void show(lnode *head) //s1:接收头结点
{
lnode *p; //s2:定义一个指针
p=head; //s3:将头结点传给指针p
for(;p;p=p->next) //s4:判断节点是否为空,节点下移
printf("%d ",p->a); //s5:输出节点内容
}
void main()
{
lnode *head;
head=creat();
show(head);
destory(head);
}
内存报错是什么原因啊?帮解决下,谢谢啦!