C++ Program to Reverse a String Using Stack
Last Updated :
18 Dec, 2023
Improve
Given a string, reverse it using stack. For example “GeeksQuiz” should be converted to “ziuQskeeG”.
Following is simple algorithm to reverse a string using stack.
1) Create an empty stack.
2) One by one push all characters of string to stack.
3) One by one pop all characters from stack and put
them back to string.
Following programs implements above algorithm.
Try it on GfG Practice
- C++
- Java
C++
// C++ program to reverse a string // using stack #include <bits/stdc++.h> using namespace std; // A structure to represent // a stack class Stack { public : int top; unsigned capacity; char * array; }; // function to create a stack of // given capacity. It initializes // size of the stack as 0 Stack* createStack(unsigned capacity) { Stack* stack = new Stack(); stack->capacity = capacity; stack->top = -1; stack->array = new char [(stack->capacity * sizeof ( char ))]; return stack; } // Stack is full when the top is equal // to the last index int isFull(Stack* stack) { return stack->top == stack->capacity - 1; } // Stack is empty when the top is equal to -1 int isEmpty(Stack* stack) { return stack->top == -1; } // Function to add an item to stack. // It increases the top by 1 void push(Stack* stack, char item) { if (isFull(stack)) return ; stack->array[++stack->top] = item; } // Function to remove an item from // stack. It decreases the top by 1 char pop(Stack* stack) { if (isEmpty(stack)) return -1; return stack->array[stack->top--]; } // A stack-based function to reverse // a string void reverse( char str[]) { // Create a stack of capacity //equal to length of string int n = strlen (str); Stack* stack = createStack(n); // Push all characters of string // to stack int i; for (i = 0; i < n; i++) push(stack, str[i]); // Pop all characters of string and // put them back to str for (i = 0; i < n; i++) str[i] = pop(stack); } // Driver code int main() { char str[] = "GeeksQuiz" ; reverse(str); cout << "Reversed string is " << str; return 0; } |
Java
Output:
Reversed string is ziuQskeeG
Time Complexity: O(n) where n is number of characters in stack.
Auxiliary Space: O(n) for stack.