Каков правильный тип возвращаемого значения для построения? - PullRequest
0 голосов
/ 06 октября 2019

Моя сборка не удалась. Я не уверен, почему ...

Введение: Для этого назначения вы должны написать программу переменного тока, которая будет принимать в качестве входного выражения инфиксное выражение и отображать входное выражение постфикса. После преобразования в постфиксное выражение программа должна вычислить выражение из постфикса и отобразить результат.

Для этого нам нужно использовать стеки, и я уже не могу создать первый динамически выделенный стек.

typedef struct stack
{
    int top;
    int capacity;
    int *arr;

} stack;

stack* createStack(int capacity) //create a stack, must allocate a box of memory of pointer to that stack
{
    stack* s = malloc(sizeof(stack)*1);
    s->top = -1; //bc it's a pointer, use an arrow or (*s).top;
    s-> capacity = capacity;   //one's a pointer, one's what's 
          //passed to it
    s-> arr = malloc(sizeof(char)* capacity);
     //defensive coding: checks to see if we found space for the 
                     //array
     if(s->arr == NULL)
     {
        printf("Failed to find space for the array.\n");
        free(s);
        return NULL;
      }
    else
        return s;
}

1 Ответ

0 голосов
/ 06 октября 2019

У вас есть целочисленный указатель int *arr;, но в вашем коде вы выделили меньше памяти s-> arr = malloc(sizeof(char)* capacity);

, вместо этого вы должны написать: s-> arr = malloc(sizeof(int)* capacity);

...