我调试了一下
发现运行到
printf("%d ", p->data);
就发生了错误
代码如下
#include
#include
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkList;
void InitList(LinkList L) {
LNode *s, *p; //S指向新申请的结点,P指向后结点
L = (LNode *)malloc(sizeof(LNode)); //建立头结点
L->data = -1;
L->next = NULL;
p = L; //P指向头结点
int n;
scanf("%d", &n);
for (; n != 0;) {
s = (LNode *)malloc(sizeof(LNode)); //新建结点
s->data = n; //放入data
p->next = s; //P结点指向新结点S
p = p->next; //p取代s结点
scanf("%d", &n);
}
p->next = NULL; //终端结点不指向
}
void outlist(LinkList L ) {
LinkList p = L;
L = L->next;
while ( p != NULL ) {
printf("%d ", p->data);
p = p->next;
}
}
int main() {
LinkList L;
InitList(&L);
outlist(L);
return 0;
}