#include<iostream>
using namespace std;
struct ListNode
{
int value;
ListNode *next;
};
ListNode* AddToTail(ListNode *pHead,int value)
{
ListNode *pNew = new ListNode;
pNew->value = value;
pNew->next = NULL;
if (pHead == NULL)
{
pHead = pNew;
}
else
{
ListNode *pNode = pHead;
while(pNode->next != NULL)
{
pNode = pNode->next;
}
pNode->next = pNew;
}
return pHead;
}
void printList(ListNode *pHead)
{
ListNode *temp = pHead;
while(temp!=NULL)
{
cout<<temp->value<<endl;
temp = temp->next;
}
}
ListNode *ReverseList(ListNode *pHead)
{
if (pHead==NULL || pHead->next==NULL)
return pHead;
ListNode *pre,*now,*next;
pre = pHead;
now = pre->next;
pre->next = NULL;
while(now!=NULL)
{
next = now->next;
now->next = pre;
pre = now;
now = next;
}
return pre;
}
void main()
{
ListNode *phead=NULL;
for (int i=0 ; i<10 ; ++i)
{
phead = AddToTail(phead,i);
}
printList(phead);
phead = ReverseList(phead);
printList(phead);
}