链表问题,请大师指教
#include <stdio.h>#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}LNode,*LinkList;
void initList(LinkList l){
l=(LinkList)malloc(sizeof(LNode));
if(!l){
printf("list init fail\n");
exit(1);
}else{
l->next=NULL;
printf("list init scucess!\n");
}
}
void createList(LinkList l,int n){
LinkList p;
int i;
for(i=1;i<=n;i++){
p=(LinkList)malloc(sizeof(LNode));
if(!p){
printf("list create fail\n");
exit(1);
}
p->data=i;
p->next=l->next;
l->next=p;
printf("put data:%d\n",i);
}
p->next=NULL;
printf("list create scucess!,number is %d.\n",i);
}
void destroyList(LinkList l){
LinkList p;
while(l!=NULL){
p=l;
l=l->next;
if(p!=NULL){
free(p);
}
}
}
void printList(LinkList l){
LinkList p=l->next;
int i=0;
int data=0;
while(p!=NULL){
data=p->data;
p=p->next;
if((++i)==1){
printf("list:\t%d\t",data);
}else{
printf("%d\t",data);
}
}
printf("cycile %d\n",i);
}
main()
{
LinkList l;
clrscr();
initList(l);
createList(l,10);
printList(l);
destroyList(l);
}
问题:
1、printList函数的输出为:10 9 8 7 6 5 4 3 2 1 0 0 ,为什么输出多了两个0
2、destroyList函数执行的时候直接输出:Null pointer assignment
请大师指点为什么会出现这种情况