Реализация стека в C [массив] Проблема - «this» должно быть изменяемым lvalue - PullRequest
0 голосов
/ 07 мая 2020

Я работаю над общей c -реализацией стека в C, и, похоже, я получаю вышеупомянутую ошибку при попытке pu sh или pop. Вот мой код ниже:

Заголовочный файл:

#ifndef STACK_H_
#define STACK_H_

#include <stdbool.h>

typedef struct Stack Stack;

struct Stack {
    void* element;
    int top;
    int capacity;
    int size; 
};


Stack* new_Stack(int max_size);

bool Stack_push(Stack* this, void* element);

void* Stack_pop(Stack* this);

int Stack_size(Stack* this);

bool Stack_isEmpty(Stack* this);

#endif 

C Файл:

#include <stddef.h>
#include "Stack.h"

Stack *new_Stack(int max_size) {
    Stack* stack = malloc(sizeof(Stack)); 
    stack->capacity = max_size; 
    stack->top = -1; 
    stack->size = 0;
    stack->element = calloc(sizeof(void*)*max_size); 
    return stack;
}

bool Stack_push(Stack* this, void* element) {

    if (this->top >= this->capacity-1){
        return false;
    }

    this->element[this->top++] = element;
    return true;
}


void* Stack_pop(Stack* this) {

    if(Stack_isEmpty(this)){
        return NULL;
    }
    else {
        return this->element[this->top--];
    }
}

int Stack_size(Stack* this) {
    return this->size; 
}


bool Stack_isEmpty(Stack* this) {
    if(this->top = -1){
        return true;
    }
    else {
        return false;
    }
}

В pu sh () & pop () функции, строки «this-> element [this-> top ++] = element;» и «return this-> element [this-> top-]» вызывают ошибку « this должно быть изменяемым lvalue».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...