#include <iostream>
using namespace std;
struct Node
{
int val;
struct Node* next;
};
Node* List_Create()
{
Node* list = NULL;
Node* slider = NULL;
for(int i=0; i<5; i++)
{
struct Node* n = new Node();
if(n!=NULL)
{
n->next = NULL;
n->val = i+1;
if(list == NULL)
{
list = n;
slider = n;
}
else
{
slider->next = n;
slider = n;
}
}
}
return list;
}
void List_Destroy(Node* list)
{
while(list)
{
Node* toDel = list;
list = toDel->next;
delete toDel;
}
}
Node* List_Reverse(Node* list)
{
if(!list || !list->next)
{
return list;
}
else
{
Node* slider = list->next;
Node* ret = List_Reverse(list->next);
slider->next = list;
list->next = NULL;
return ret;
}
}
void List_Print(Node* list)
{
while(list)
{
cout << list->val << "->";
list = list->next;
}
cout << "NULL" << endl;
}
int main(void)
{
Node* list = List_Create();
List_Print(list);
list = List_Reverse(list);
List_Print(list);
List_Destroy(list);
return 0;
}
递归入栈出栈简易示意图:
输出: