#include "stdafx.h"
#include
#include
struct LNode
{
char val;
LNode* next;
};
LNode* make_list(const std::string& s)
{
LNode* root = 0;
LNode* last = 0;
for(std::string::const_iterator it=s.begin();it!=s.end();++it)
{
LNode* n = new LNode();
n->val = *it;
if(!root)
{
root = n;
}
else last->next = n;
last = n;
}
return root;
}
LNode* reverse(LNode* node, LNode* next = 0)
{
if(!node->next)// last node
{
node->next = next;
return node;
}
LNode* reversed = reverse(node->next, node);
node->next = next;
return reversed;
}
LNode* reverse1(LNode* root)
{
LNode* front = 0;
LNode* cur = root;
LNode* nxtcur = 0;
while(cur)
{
nxtcur = cur->next;
cur->next = front;
front = cur;
cur = nxtcur;
}
return front;
}
int _tmain(int argc, _TCHAR* argv[])
{
LNode* node = make_list("test list");
node = reverse(node);
while(node)
{
std::coutval;
node=node->next;
}
std::coutval;
node=node->next;
}
std::cout<