就地逆置就是不需要额外申请结点空间,利用原有的表中的结点空间。
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct Node{
int data;
Node *next;
}*Linklist;
Linklist creat(Linklist L){
Node *p,*r;
int x;
L=(Linklist)malloc(sizeof(Node));
/*L=new Node;*/
L->next=0;
r=L;
cin>>x;
while(x!=-1){
p=(Linklist)malloc(sizeof(Node));
/*p=new Node;*/
p->data=x;
p->next=0;
r->next=p;
r=p;
cin>>x;
}
return L;
}
void reverse(Linklist L){
Node *p,*q;
p=L->next;
L->next=0;
while(p!=0){
q=p->next;
p->next=L->next;
L->next=p;
p=q;
}
return ;
}
void show(Linklist L){
Node *p;
p=L->next;
while(p!=0){
cout<<p->data<<' ';
p=p->next;
}
return ;
}
int main(){
Linklist La;
La=creat(La);
reverse(La);
show(La);
}