解释一下 反转链表 的这个程序吧,该如何解决
解释一下 反转链表 的这个程序吧
只要解释算法部分,详细点吧,谢谢了,麻烦大家了
#include <iostream>
using namespace std;
//元结点
struct Node
{
int data;
Node *next;
};
//链表反转(循环方法)
Node *Reverse(Node *head)
{
Node *prev = NULL;
Node *cur = NULL;
Node *next = head;
for (; next != NULL; )
{
cur = next;
next = cur-> next;
cur-> next = prev;
prev = cur;
}
return prev;
}
//链表反转(递归方法)
Node *Reverse2(Node *head)
{
if (!head)
{
return NULL;
}
Node *temp = Reverse2(head-> next);
if (!temp)
{
return head;
}
head-> next-> next = head;
head-> next = NULL;
return temp;
}
//创建链表
Node *Construct(int *const array, int len)
{
Node *pre = NULL, *head = NULL;
for (int i = len; i > 0; i--)
{
if (!pre)
{
head = new Node;
head-> data = array[len - i];
head-> next = NULL;
pre = head;
}
else
{
pre-> next = new Node;
pre = pre-> next;
pre-> data = array[len - i];
pre-> next = NULL;
只要解释算法部分,详细点吧,谢谢了,麻烦大家了
#include <iostream>
using namespace std;
//元结点
struct Node
{
int data;
Node *next;
};
//链表反转(循环方法)
Node *Reverse(Node *head)
{
Node *prev = NULL;
Node *cur = NULL;
Node *next = head;
for (; next != NULL; )
{
cur = next;
next = cur-> next;
cur-> next = prev;
prev = cur;
}
return prev;
}
//链表反转(递归方法)
Node *Reverse2(Node *head)
{
if (!head)
{
return NULL;
}
Node *temp = Reverse2(head-> next);
if (!temp)
{
return head;
}
head-> next-> next = head;
head-> next = NULL;
return temp;
}
//创建链表
Node *Construct(int *const array, int len)
{
Node *pre = NULL, *head = NULL;
for (int i = len; i > 0; i--)
{
if (!pre)
{
head = new Node;
head-> data = array[len - i];
head-> next = NULL;
pre = head;
}
else
{
pre-> next = new Node;
pre = pre-> next;
pre-> data = array[len - i];
pre-> next = NULL;