请问这个程序哪里错了呢?

//设计一个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说要求算法的空间复杂度为O(1)。


#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct LNode{

    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
int IntiList(LinkList &L){
    L=new LNode;
    L->next=NULL;
    return OK;
}
void input(LinkList &L,int n){
    LinkList r;
    LinkList p;
    r=L;
    int i;
    cout<<"请输入一些值"<<endl;
    for(i=0;i<n;i++){
        p=new LNode;
        cin>>p->data;
        p->next=NULL;
        r->next=p;
        r=p;
    }
}

int RevertList(LinkList &L)
{
    LinkList p,q,pr;
    p=L;
    q=p->next;
    while(q){
        pr=q->next;
        q->next=p;
        p=q;
        q=pr;
    }
    L->next=q;
    return OK;
}


void ShowList(LinkList L){
    LinkList p;
    p=L->next;
    while(p){
        cout<<p->data<<endl;
        p=p->next;
    }
}
int main(){
    LinkList L,m;
    int n;
    cout<<"请输入要存储的元素个数"<<endl;
    cin>>n;
    if(IntiList(L)){
        input(L,n);
        cout<<"存储完成"<<endl;
    }

    if( RevertList(L) ){
        cout<<"转换完成"<<endl;
        //ShowList(L);
        m=L->next;
        cout<<"各个元素为:"<<endl;
        while(m){
            cout<<m->data<<endl;
            m=m->next;
        }
    }
    return 0;    
}

img

系统没有报错,最后的结果是这样的,请问是哪里错了呢?