单链表数据可以输入无法输出是什么问题


#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
    int data;
    struct LNode *next;
} LNode,*LinkList;

void creat(LinkList L,int a[],int n)
{
    LinkList s;
    int i;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    for(i=0; i<n; ++i)
    {
        s=(LinkList)malloc(sizeof(LNode));
        s->data=a[i];
        s->next=L->next;
        L->next=s;
    }

}
void print(LinkList L)
{
    LinkList f;
    f=L;
    while(f->next);
    {
        f=f->next;
        printf("%d",f->data);
    }
}

int main()
{
    LinkList L;
    int n;
    printf("请输入数组的个数:");
    scanf("%d",&n);
    int a[n];
    printf("请输入数组中的数:");
    for(int i=0; i<n; ++i)
    {
        scanf("%d",&a[i]);
    }
    creat(L,a,n);
    print(L);
    return 0;
}

29行while(f->next);
while后面加了分号

把创建链表的函数形参表L用 引用 吧,修如下,供参考:

void creat(LinkList &L,int a[],int n)
{
    LinkList s;
    int i;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    for(i=0; i<n; ++i)
    {
        s=(LinkList)malloc(sizeof(LNode));
        s->data=a[i];
        s->next=L->next;
        L->next=s;
    }
}