逆序创建链表,为什么我这个没有输出啊?要怎么改啊?

img

#include
#include
struct LinkList
{
int data;
struct LinkList next;
};
void CreatList_1(struct LinkList
);
void PrintList(struct LinkList*);
int main()
{
struct LinkList *La;
CreatList_1(La);
PrintList(La);
return 0;
}
void CreatList_1(struct LinkList *head)
{
int i,n;
struct LinkList *p;
head=(struct LinkList *)malloc(sizeof(struct LinkList ));
head->next=NULL;
scanf("%d",&n);
for(i=0;i
{
p=(struct LinkList*)malloc(sizeof(struct LinkList));
scanf("%d",&p->data);
p->next=head->next;
head->next=p;
}
}
void PrintList (struct LinkList *head)
{
struct LinkList *p;
p=head->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}

建立链表通过函数返回头结点,修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
struct LinkList
{
    int data;
    struct LinkList* next;
};
struct LinkList* CreatList_1();  //修改
//void CreatList_1(struct LinkList);
void PrintList(struct LinkList*);
int main()
{
    struct LinkList *La;
    La = CreatList_1(); //CreatList_1(La); 修改
    PrintList(La);
    return 0;
}
struct LinkList* CreatList_1()
//void CreatList_1(struct LinkList *head)
{
    int i,n;
    struct LinkList *head, *p;  //修改
    head=(struct LinkList *)malloc(sizeof(struct LinkList ));
    head->next=NULL;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        p=(struct LinkList*)malloc(sizeof(struct LinkList));
        p->next=NULL;          //修改
        scanf("%d",&p->data);
        p->next=head->next;
        head->next=p;
    }
    return head;
}
void PrintList (struct LinkList *head)
{
    struct LinkList *p;
    p=head->next;
    while(p)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}


你这个create函数不行,得修改一下:

#include <stdio.h>
#include <stdlib.h>
struct LinkList
{
int data;
struct LinkList next;
};
struct LinkList * CreatList_1();
void PrintList(struct LinkList*);
int main()
{
struct LinkList * La = CreatList_1();
PrintList(La);
return 0;
}
void CreatList_1()
{
int i,n;
struct LinkList *head,*p;
head=(struct LinkList *)malloc(sizeof(struct LinkList ));
head->next=NULL;
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(struct LinkList*)malloc(sizeof(struct LinkList));
scanf("%d",&p->data);
p->next=head->next;
head->next=p;
}
return head;
}
void PrintList (struct LinkList *head)
{
struct LinkList *p;
p=head->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}