flex-bison-in-action/analyzers/polynomials/stack/stack.h

46 lines
1.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef STACK_H
#define STACK_H
#include <stdbool.h>
#include <stddef.h>
#define MAX_STACK_SIZE 100
// Структура элемента стека
typedef struct {
char *str_ptr; // Указатель на строку
char type; // Тип операнда
} Element;
// Структура стека
typedef struct {
Element data[MAX_STACK_SIZE]; // Массив элементов
int top;
} Stack;
// Инициализация стека
void initStack(Stack *s);
// Проверка на пустоту
bool isEmpty(Stack *s);
// Проверка на переполнение
bool isFull(Stack *s);
// Добавление опаранда в стек (push),
// операндом может быть число или выражение с переменной
bool push(Stack *s, const char *value, char type);
// Извлечение элемента из стека (pop)
bool pop(Stack *s, Element *out);
// Просмотр верхнего элемента без извлечения (peek)
bool peek(Stack *s, Element *out);
// Очистка стека (освобождение памяти)
void clearStack(Stack *s);
// Вычисление выражения
char* calulate(Element* tokens, int tokens_count);
#endif // STACK_H