- 先记下代码和思路,后面慢慢理解
#include
using namespace std;
struct LinkNode
{
int val;
LinkNode *next;
LinkNode(int val, LinkNode *next = nullptr)
{
this->val = val;
this->next = next;
}
};
LinkNode *create(int intarr[], int length, int num)
{
LinkNode *node = nullptr;
if (num < length)
{
node = new LinkNode(intarr[num]);
node->next = create(intarr, length, num + 1);
}
return node;
}
void display(LinkNode *node)
{
while (node)
{
cout << node->val << " ";
node = node->next;
}
cout << endl;
}
LinkNode *reverseLinkNode(LinkNode *node)
{
if (node == nullptr || node->next == nullptr)
{
return node;
}
LinkNode *newhead = reverseLinkNode(node->next);
node->next->next = node;
node->next = nullptr;
return newhead;
}
int main()
{
int intarr[10] = { 0,1,2,3,4,5,6,7,8,9 };
LinkNode *add1 = create(intarr, 10, 0);
display(add1);
LinkNode *add2 = reverseLinkNode(add1);
display(add2);
system(“pause”);
return 0;
}