1、使用非递归实现
typedef struct node
{
int data;
struct node* next;
}Node,*pnode;
pnode reverse_node(pnode head)
{
pnode p1 = head;
pnode p2 = head->next;
head->next = NULL;
while(p2!=NULL)
{
p1 = p2;
p2 = p2->next;
p1->next = head;
head = p1;
}
return head;
}
2、使用递归实现
pnode reverse_node(pnode head)
{
pnode pnew;
if(head == NULL || head->next == NULL)
{
return head;
}
pnew = reverse_node(head->next);
head->next->next = head;//回溯实现
head->next = NULL;
return pnew;
}