#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct node{
int num;
node *next;
}node_t;
void reverse_list(node_t **pheadmain);
void print_list(node_t *pheadmain);
void free_list(node_t *pheadmain);
void main()
{
node_t *phead = NULL;
node_t *pheadtemp = NULL;
node_t *temp = NULL;
int i;
phead = (node_t *)malloc(sizeof(node_t));
phead->num = 0;
phead->next = NULL;
pheadtemp = phead;
for(i=1; i<5; i++)
{
temp = (node_t *)malloc(sizeof(node_t));
temp->num = i;
temp->next = NULL;
pheadtemp->next = temp;
pheadtemp = pheadtemp->next;
}
print_list(phead);
reverse_list(&phead);
print_list(phead);
free_list(phead);
}
void free_list(node_t *pheadmain)
{
node_t *phead = pheadmain;
node_t *pheadtemp = NULL;
while(phead != NULL)
{
pheadtemp = phead->next;
free(phead);
phead = pheadtemp;
}
}
void print_list(node_t *pheadmain)
{
node_t *phead = pheadmain;
while(phead != NULL)
{
cout<<phead->num<<" ";
phead = phead->next;
}
cout<<endl;
}
void reverse_list(node_t **pheadmain)
{
node_t *phead = *pheadmain;
node_t *pheadPPP = NULL;
node_t *pheadQQQ = NULL;
pheadPPP = phead;
phead = phead->next;
pheadPPP->next = NULL;/*init*/
while(phead != NULL)
{
pheadQQQ = phead->next;
phead->next = pheadPPP;
pheadPPP = phead;
phead = pheadQQQ;
}
*pheadmain = pheadPPP;
}