#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct Student
{
int score;
Student * next;
} SNode;
SNode * newNode()
{
SNode * p=NULL;
p = (SNode*)malloc(sizeof(SNode));
if (NULL==p)
{
printf("malloc new node failed!!!");
exit(0);
}
p->next=NULL;
p->score=0;
return p;
}
SNode * createList()
{
SNode * pHead = NULL;
SNode * pCurent = NULL;
SNode * pTmp = NULL;
int score = 0;
while(1)
{
scanf("%d",&score);
if (score<0)
{
break;
}
pTmp = newNode();
pTmp->score = score;
if (NULL == pCurent)
{
pCurent = pTmp;
pHead = pCurent;
}
else
{
pCurent->next = pTmp;
pCurent = pTmp;
}
}
return pHead;
}
void deleteList(SNode * pHead)
{
SNode * pTemp = NULL;
while(NULL != pHead)
{
pTemp = pHead;
pHead = pHead->next;
free(pTemp);
pTemp = NULL;
}
return;
}
void printList(SNode * pHead)
{
if (NULL==pHead)
{
printf("This is empty List\n");
return;
}
while(NULL != pHead)
{
printf("%d\t",pHead->score);
pHead = pHead->next;
}
printf("\n");
return;
}
SNode * reverse(SNode * pHead)
{
if (NULL == pHead)
{
return NULL;
}
SNode * pTempHead = pHead;
SNode * pCurrent = pHead->next;
pHead->next=NULL;
SNode * pNext = NULL;
while (NULL != pCurrent)
{
pNext=pCurrent->next;
pCurrent->next = pTempHead;
pTempHead = pCurrent;
pCurrent = pNext;
}
return pTempHead;
}
int main()
{
SNode * list = NULL;
list = createList();
printList(list);
list=reverse(list);
printList(list);
deleteList(list);
list = NULL;
return 0;
}