//设计一个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说要求算法的空间复杂度为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;
}
系统没有报错,最后的结果是这样的,请问是哪里错了呢?