#include <iostream>
using namespace std;
struct node {
int val;
node *next;
};
node *start;
void insert(int x) {
node *t = start;
if (start != NULL) {
while (t->next != NULL) {
t = t->next;
}
node *n = new node;
t->next = n;
n->val = x;
n->next = NULL;
} else {
node *n = new node;
n->val = x;
n->next = NULL;
start = n;
}
}
void reverse(node *p, node *q) {
if (q->next == NULL) {
q->next = p;
p->next = NULL;
start = q;
return;
} else {
reverse(q, q->next);
q->next = p;
p->next = NULL;
}
}
void show() {
node *t = start;
while (t != NULL) {
cout << t->val << "\t";
t = t->next;
}
}
int main() {
insert(1);
insert(2);
insert(3);
insert(4);
insert(5);
insert(6);
reverse(start, start->next);
show();
return 0;
}