struct node { int val; struct node* next; node(int t, node* n=0) { val = t; next = n; } }; typedef struct node* link; void insert_list(link &h, int t) { if (0 == h) { h = new node(t); return; } link p = new node(t); p->next = h; h = p; } link reverse_listR(link h, link pre) { if (0 == h) return pre; link t = h->next; h->next = pre; return reverse_listR(t, h); } link reverse_list(link h) { return reverse_listR(h, 0); }