来自SO,貌似没啥实际应用,但是思路不错,留存。
#include <Windows.h> #include <iostream> using namespace std; struct node { int data; node* next; node(int d, node* p):data(d), next(p){} }; void print_list(node* head) { node* temp = head; while(temp != NULL) { cout << temp->data << " -> "; temp = temp->next; } cout << "NULL"; cout << endl; } void reverse_linklist1(node*& head) { node* first = head; node* rest = first->next; if (rest == NULL) return; reverse_linklist1(rest); first->next->next = first; first->next = NULL; head = rest; } void reverse_linklist2(struct node*& head) { node *p = head; if(p->next == NULL){ return; } head = p->next; reverse_linklist2(head); p->next->next = p; p->next = NULL; } int main(void) { // build link list node* p3 = new node(3, NULL); node* p2 = new node(2, p3); node* p1 = new node(1, p2); print_list(p1); reverse_linklist2(p1); print_list(p1); getchar(); return 0; }
本文转自zdd博客园博客,原文链接:http://www.cnblogs.com/graphics/p/3780227.html,如需转载请自行联系原作者