给你来个完整的可以运行的!
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
    int data;
    struct LNode *next;
}LNode,*Linklist;
void initial(Linklist L)
{
    Linklist p;
    p=(Linklist)malloc(sizeof(LNode));
    if(!p) exit(0);
    L=p;
    L->next=NULL;
}
void creatlist(Linklist L)
{
    Linklist p,q;
    int m;
    q=L;
    printf("请输入若干个正整数,输入非正整数时结束:\n");
    while(1)
    {
        scanf("%d",&m);
        if(m>0)
        {
            p=(Linklist)malloc(sizeof(LNode));
            p->data=m;
            q->next=p;
            q=p;
        }
        else break;
    }
    p->next=NULL;
}
void displaylist(Linklist L)
{
    Linklist p=L;
    for(p=L->next;p!=NULL;p=p->next)
        printf("%d  ",p->data);
    printf("\n");
}
void reverse(Linklist L)//方法:在第一个结点之前依次插入后面的元素
{
    Linklist p,q;
    p=L->next->next;q=p->next;
    L->next->next=NULL;
    while(q)
    {
        p->next=L->next;
        L->next=p;
        p=q;
        q=q->next;
    }
    p->next=L->next;//处理链表中的最后一个结点
    L->next=p;
}
void main()
{
    LNode A;
    initial(&A);
    creatlist(&A);
    printf("原序输出链表:\n");
    displaylist(&A);
    reverse(&A);
    printf("逆序输出链表:\n");
    displaylist(&A);
}