TheAlgorithms-C-Plus-Plus/operations_on_datastructures/Reverse a Linked List using Recusion.cpp

77 lines
792 B
C++

#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;
}