#include <stdio.h>
typedef struct tagNode
{
int data;
struct Node* next;
}Node;
void Reverse(Node* pHead)
{
Node* pReverse = NULL;
Node* pCurrent = pHead->next;
Node* pTmp;
if (!pHead)
return;
while (pCurrent)
{
pTmp = pCurrent->next;
pCurrent->next = pReverse;
pReverse = pCurrent;
pCurrent = pTmp;
}
pHead->next = pReverse;
}
void Init(Node* pHead, int* arr, int len)
{
Node* p;
int i;
for (i = len-1; i >= 0;i--)
{
p = (Node*)malloc(sizeof(Node));
p->data = arr[i];
p->next = pHead->next;
pHead->next = p;
}
}
void PrintList(Node* pHead)
{
Node* p;
for (p = pHead->next; p != NULL; p = p->next)
printf("%d ",p->data);
printf("\n");
}
int main()
{
int arr[] = {1,2,3,4,5};
Node head;
head.next = NULL;
Init(&head,arr,sizeof(arr)/sizeof(int));
PrintList(&head);
Reverse(&head);
PrintList(&head);
getchar();
return 0;
}