Back Source

Reversing string using stack.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define S_SIZE 30

typedef struct Stack {
  int pos;
  char arr[S_SIZE];
} Stack;

void push(Stack *stk, char val) {
  if (stk->pos + 1 >= S_SIZE) {
    printf("Stack Overflow!\n");
    return;
  }
  stk->arr[++stk->pos] = val;
}

char pop(Stack *stk) {
  if (stk->pos == -1) {
    printf("Stack Underflow!\n");
    return '\0';
  }
  return stk->arr[stk->pos--];
}

int main() {
  char text[S_SIZE], rev[S_SIZE];
  int i = 0;
  Stack *st = (Stack *)malloc(sizeof(Stack));
  st->pos = -1;

  printf("Enter text: ");
  scanf("%[^\n]", text);
  for (i = 0; i < strlen(text); i++) {
    push(st, text[i]);
  }
  for (i = 0; i < strlen(text); i++) {
    rev[i] = pop(st);
  }
  rev[i] = '\0';
  printf("Revered Text: %s\n", rev);
  return 0;
}