Sorry, for assuming. I am attaching the smallest possible executable code
Code:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
Node *next;
Node *prev;
}Node;
Node * createNode(int data)
{
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
newNode->prev = NULL;
return newNode;
}
void BuildList(Node **root, int data)
{
Node *temp = *root;
if(temp ==NULL)
{
*root = createNode(data);
}
else
{
while(temp->next != NULL)
{
temp = temp->next;
}
Node *newNode = createNode(data);
temp->next = newNode;
newNode->prev = temp;
}
}
void printList(Node **root)
{
Node *temp = *root;
while(temp != NULL)
{
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
void reverseRecursive(Node **root, Node *temp)
{
Node *next = temp->next;
if(temp->next == NULL)
{
*root = temp;
return;
}
reverseRecursive(&(*root), temp->next);
// printf("%d ", next->data);
temp->next = temp->prev;
temp->prev = next;
}
int main()
{
Node *root = NULL;
BuildList(&root, 67);
BuildList(&root, 68);
BuildList(&root, 69);
BuildList(&root, 70);
// printList(&root);
// reverseIterative(&root);
// printList(&root);
reverseRecursive(&root, root);
printList(&root);
// printRecursive(root);
return 0;
}