#stack
#стек
Вопрос:
struct Stack* create(int max) {
struct Stack *stack = (struct Stack*)malloc(sizeof(struct Stack));
stack->maxSize = max;
stack->top = -1;
stack->array = (int*)malloc(stack->maxSize * sizeof(int));
return stack; }
int isFull(struct Stack* stack)
{
if(stack->top == stack->maxSize - 1)
{
printf("STACKOVERFLOWn");
}
return stack->top == stack->maxSize - 1;
}
Каково использование struct Stack * stack в этом вопросе?
Я пытаюсь понять стек, но не могу понять, почему мы должны использовать эту структуру Stack* stack
Комментарии:
1. Вам нужно будет пометить конкретный язык, используемый здесь, C, например
Ответ №1:
Код динамически выделяет внутренний массив, который он (предположительно *) использует в качестве стека. Это избавляет разработчика от необходимости предопределять один или несколько массивов фиксированной длины, что было бы расточительно. Использование динамически распределяемой структуры данных делает код гибким. Предположительно, это прямой код на языке Си, и реализация кода в виде структуры дает вам преимущества, приближающиеся к преимуществам реального объекта на реальном объектно-ориентированном языке (например, частичное [но не реальное] скрытие данных).
* Я должен сказать, по-видимому, потому, что код не реализует никаких определенных операций со стеком, кроме проверки, заполнен ли стек (isFull() ).