![](https://img-blog.csdnimg.cn/direct/f1747fee7ba442be98c6f8886878e11b.png)
//递归
List Reverse(List L)
{
if (L == NULL || L->Next == NULL) return L;
struct Node* tail = L->Next;
struct Node* new_head = Reverse(L->Next);
L->Next=tail->Next;
tail->Next = L;
return new_head;
}
//虚拟头结点的头插法
List Reverse(List L)
{
struct Node* new_head = (struct Node*)malloc(sizeof(struct Node));
new_head->Next = NULL;
struct Node* p = L;
while (p != NULL) {
struct Node* temp = p->Next;
p->Next = new_head->Next;
new_head->Next = p;
p = temp;
}
return new_head->Next;
}
//头插法
List Reverse(List L)
{
struct Node* new_head = NULL;
struct Node* p = L;
while (p != NULL) {
struct Node* temp = p->Next;
p->Next = new_head;
new_head = p;
p = temp;
}
return new_head;
}
//双指针法
List Reverse(List L)
{
struct Node* p = L;
struct Node* q = NULL;
while (p != NULL) {
struct Node* temp = p->Next;
p->Next = q;
q=p;
p = temp;
}
return q;
}