'Stack balanced Parentheses build log show :- Process terminated with status -1073741510 (0 minute(s), 2 second(s))

When I try to implement parenthesis problem using stack (array representation) it showing above problem. Here I use dynamic memory allocation in array. When I try to compile the above program it appear built log like : process terminated with status -1073741510 (0 minute(s), 2 second(s))

#include<stdlib.h>
struct stack
{
  int size;
  int top;
  char *arr;
};

int parenthematch(char *pt)
{

  struct stack *st;
  st->size = 100;
  st->top = -1;
  st->arr = (char *)malloc(st->size * sizeof(char)); //create array of st->size

  for(int i=0; pt[i]!='\0'; i++)
  {

      if(pt[i]=='(')
      {
          push(st,'(');

      }
      else if(pt[i]==')')
      {
          if(isEmpty(st))
          {
              return 0;
          }
          pop(st);
      }

  }

 


int main()
{

  char *p ="(34)(4(5+6))";
  if(parenthematch(p))
  {
      printf("parenthesis match \n");
  }
  else
  {
      printf("Not match");
  }

  return 0;
} ```



Solution 1:[1]

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

struct stack
{
    size_t size;
    int top;
    char *arr;
};

void push(struct stack *st, char ch)
{
    st->top += 1;
    st->arr[st->top] = ch;
}

int isEmpty(struct stack *st)
{
    return st->top == -1;
}

void pop(struct stack *st)
{
    st->top -= 1;
}

int parenthematch(char *pt)
{

    struct stack *st = (struct stack *)malloc(sizeof(struct stack));
    st->size = 100;
    st->top = -1;
    st->arr = (char *)malloc(st->size * sizeof(char)); //create array of st->size

    for (int i = 0; pt[i] != '\0'; i++)
    {

        if (pt[i] == '(')
        {
            push(st, '(');
        }
        else if (pt[i] == ')')
        {
            if (isEmpty(st) || st->arr[st->top] != '(')
            {
                return 0;
            }
            pop(st);
        }
    }
    return isEmpty(st);
}

int main()
{

    char p[] = "(34)(4(5+6))";
    if (parenthematch(p))
    {
        printf("parenthesis match \n");
    }
    else
    {
        printf("Not match");
    }

    return 0;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Satyam Lohiya