Skip to main content

Print reverse order of linked list with recursion in c

C program for Print reverse order of linked list with recursion. Here problem description and other solutions.

// Include header file
#include <stdio.h>
#include <stdlib.h>

// C program for
// Print reverse of a linked list without actually reversing

// Linked list node
typedef struct LinkNode
{
	// Define useful field of LinkNode
	int data;
	struct LinkNode * next;
}LinkNode;

LinkNode * getLinkNode(int data)
{
	// Create dynamic memory of LinkNode
	LinkNode * ref = (LinkNode * ) malloc(sizeof(LinkNode));
	if (ref == NULL)
	{
		// Failed to create memory 
		return NULL;
	}
	ref->data = data;
	ref->next = NULL;
	return ref;
}

typedef struct SingleLL
{
	// Define useful field of SingleLL
	struct LinkNode * head;
	struct LinkNode * tail;
}SingleLL;

SingleLL * getSingleLL()
{
	// Create dynamic memory of SingleLL
	SingleLL * ref = (SingleLL * ) malloc(sizeof(SingleLL));
	if (ref == NULL)
	{
		// Failed to create memory 
		return NULL;
	}
	ref->head = NULL;
	ref->tail = NULL;
	return ref;
}
// Add new Node at end of linked list 
void addNode(SingleLL * ref, int data)
{
	LinkNode * node = getLinkNode(data);
	if (ref->head == NULL)
	{
		ref->head = node;
	}
	else
	{
		// Append the node at last position
		ref->tail->next = node;
	}
	ref->tail = node;
}
// Display reversal view of linked list using recursion
void printReverse(LinkNode * node)
{
	if (node == NULL)
	{
		return;
	}
	// Visit to next node
	printReverse(node->next);
	// Display node value
	printf(" %d ", node->data);
}
int main()
{
	SingleLL * sll = getSingleLL();
	//  1 → 2 → 8 → 4 → 9 → 6 → NULL
	addNode(sll, 1);
	addNode(sll, 2);
	addNode(sll, 8);
	addNode(sll, 4);
	addNode(sll, 9);
	addNode(sll, 6);
	// Reversal view
	// 6 9 4 8 2 1
	printReverse(sll->head);
}

Output

 6  9  4  8  2  1




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment