s=(pNode)malloc(sizeof(pNode))只申请了一个指针空间。故而后面free(s),因为找不到s指向的Node节点空间。而报错。
申请一个pNode的空间,返回一个pNode型指针s,。s->next = s是指针s的强制性操作未知空间(指针是C的精华,也是缺点。)。也就是操作了s指向空间(开始的前四个为data,后四个为next.实际上,系统不认可,所以释放报错)。你可以强制性输出s里面的内容看看。
printf("data:[%d] next:[%p]\n",s->data,s->next);
不知道说明白了没有。不明白可以追问。
我这边用的VC6 运行正常
please intput the data
11
please intput the data
33
please intput the data
44
please intput the data
55
please intput the data
66
please intput the data
77
please intput the data
0
the Linklist is : 11 33 44 55 66 77
the Linklist is : 77 66 55 44 33 11
wait to delete the number needed……
the Linklist is : 77 66 44 33 11 Press any key to cont
inue
s=(pNode)malloc(sizeof(pNode)) 这一句只申请一块存放指向struct指针的内存,逻辑上错误,
至於 s->data为什麽有意义。因为这个指针是类型是Node。