In this program, we are going to share a C program to reverse a stack using recursion. If you are a beginner and want to start learning the C programming, then keep your close attention in this tutorial as I am going to share a C program to reverse a stack using recursion.
We have designed this program for beginners for learning purpose. Copy below c program and execute it with c compiler to see the output of the program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | #include <stdio.h> #include <stdlib.h> struct node { int a; struct node *next; }; void generate(struct node **); void display(struct node *); void stack_reverse(struct node **, struct node **); void delete(struct node **); int main() { struct node *head = NULL; generate(&head); printf("\nThe sequence of contents in stack\n"); display(head); printf("\nInversing the contents of the stack\n"); if (head != NULL) { stack_reverse(&head, &(head->next)); } printf("\nThe contents in stack after reversal\n"); display(head); delete(&head); return 0; } void stack_reverse(struct node **head, struct node **head_next) { struct node *temp; if (*head_next != NULL) { temp = (*head_next)->next; (*head_next)->next = (*head); *head = *head_next; *head_next = temp; stack_reverse(head, head_next); } } void display(struct node *head) { if (head != NULL) { printf("%d ", head->a); display(head->next); } } void generate(struct node **head) { int num, i; struct node *temp; printf("Enter length of list: "); scanf("%d", &num); for (i = num; i > 0; i--) { temp = (struct node *)malloc(sizeof(struct node)); temp->a = i; if (*head == NULL) { *head = temp; (*head)->next = NULL; } else { temp->next = *head; *head = temp; } } } void delete(struct node **head) { struct node *temp; while (*head != NULL) { temp = *head; *head = (*head)->next; free(temp); } } |
Liked this program? Do Like & share with your friends.
If you like FreeWebMentor and you would like to contribute, you can write an article and mail your article to [email protected] Your article will appear on the FreeWebMentor main page and help other developers.