void reverse(Link* head) { if( !head || !head->next || !head->next->next ) return; Link* t = head->next; head->next = t->next; reverse( head ); t->next->next = t; t->next = NULL; } 主要方法就是: 1、先把头结点的指向移动到链表的末尾 2、再把每个结点指向的下一个结点的next指针指向自己,然后把自己的next指针置空 原理是利用了函数调用栈的特性 保存了栈当时的状态