#include <iostream>
#include <memory>
using namespace std;
struct node{
int data;
node* next;
node(){data=0;next=0;}
node(int d){data=d;next=0;}
node* add(int d){next=new node(d);return next;}
~node(){delete next;}
node* reverse(){
node* current=this;
node* n=current->next;
this->next=0;
while(1){
node* nn=n->next;
n->next=current;
current=n;
if(nn)n=nn;
else break;
}
return n;
}
void print(){
node* t=this;
while(t){
cout<<t->data<<' '<<t->next<<endl;
t=t->next;
}
}
};
int main()
{
node* pn=new node(1);
auto_ptr<node> n(pn);
n->add(2)->add(3)->add(4)->add(5);
node* p=n->reverse();
p->print();
//delete p;----while auto_ptr,don't have to delete;
cout << "Hello world!" << endl;
return 0;
}
|