/**** List BEGIN ****/
struct Node{
int data;
Node *next;
};
void OutList(Node *Head) {
Node *p = Head->next;
while (p != nullptr) {
printf("%d ", p->data);
p = p->next;
}
putchar('\n');
}
void ReleaseList(Node *Head) {
Node *p = Head;
Node *pNext = nullptr;
while (p != nullptr) {
pNext = p->next;
delete p;
p = pNext;
}
Head = nullptr;
}
void ReverseList(Node *Head) {
Node *p = Head->next;
Node *pPre = nullptr;
Node *pNext = nullptr;
while (p != nullptr) {
pNext = p->next;
p->next = pPre;
pPre = p;
p = pNext;
}
Head->next = pPre;
}
/**** List END ****/
int main() {
Node *Head = new Node;
memset(Head, 0, sizeof(Node));
Node *p = Head;
for (int i=0; i<10; ++i) {
Node *node = new Node;
memset(node, 0, sizeof(Node));
node->data = i;
p->next = node;
p = node;
}
OutList(Head) ;
ReverseList(Head);
OutList(Head);
ReleaseList(Head);
return 0;
}