From 832a2d986586b9a350cd464cfb167769d0cc3300 Mon Sep 17 00:00:00 2001 From: DolzhenkoAlexa Date: Sat, 20 Dec 2025 23:02:25 +0300 Subject: [PATCH 1/4] Create stack.c --- src/hw5_stack/stack.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/hw5_stack/stack.c diff --git a/src/hw5_stack/stack.c b/src/hw5_stack/stack.c new file mode 100644 index 0000000..826ee07 --- /dev/null +++ b/src/hw5_stack/stack.c @@ -0,0 +1,31 @@ +#include "stack.h" + +// Создаем стэк, делая значение top равным -1 ("нет элементов") +void init_stack(Stack *stack) { + stack->topIndex = -1; +} + +// Добавляем элемент +void push(Stack *stack, char value) { + stack->topIndex++; // Увеличиваем индекс на 1 + stack->elements[stack->topIndex] = value; // Добавляем сам элемент в массив +} + +// Берем верхний элемент и удаляем его +char pop(Stack *stack) { + if (StackEmptiness(stack)) { // Проверяем не пуст ли стек + return '\0'; // Возвращаем '\0' если пуст (в таком виде, потому что нужно вернуть char) + } + char value = stack->elements[stack->topIndex]; // Сохраняем верхний элемент + stack->topIndex--; // Уменьшаем индекс + return value; // Возвращаем сохраненный элемент +} + +// Проверяем пуст ли стек (Чтоб не убрать "пустоту") +int StackEmptiness(Stack *stack) { + if (stack->topIndex == -1) { + return 1; // 1 - стек пуст + } else { + return 0; // 0 - стек не пуст + } +} From 3b859ff978922a1a5c4039f62852b0195ab75fb4 Mon Sep 17 00:00:00 2001 From: DolzhenkoAlexa Date: Sat, 20 Dec 2025 23:05:55 +0300 Subject: [PATCH 2/4] Create stack.h --- src/hw5_stack/stack.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/hw5_stack/stack.h diff --git a/src/hw5_stack/stack.h b/src/hw5_stack/stack.h new file mode 100644 index 0000000..9d61041 --- /dev/null +++ b/src/hw5_stack/stack.h @@ -0,0 +1,41 @@ +// Description: Этот модуль предоставляет функции для работы со стеком: +// создание стэка (init_stack), добавление (push), извлечение элементов (pop) и проверка на пустоту (is_empty). +// Нужен для двух задач: Продвинутый баланс скобок и Сортировочная станция +// +#pragma once +#define STACK_SIZE 512 + +// +// Структура для стека +// В ней создаем char массив для хранения элементов длины STACK_SIZE и переменную для хранения индекса верхнего элемента +// +typedef struct { + char elements[STACK_SIZE]; // массив для хранения + int topIndex; // индекс верхнего элемента +} Stack; + +// +// Создание стека +// В качестве параметра берем указатель на стек (для изменения самого стека, а не только копии) +// +void init_stack(Stack *stack); + +// +// Добавление элемента в стек +// Параметр - Указатель на стек и значение элемента для добавления +// +void push(Stack *stack, char value); + +// +// Удаление элемента из стека с проверкой на пустоту +// Параметр - Указатель на стек +// Вернет значение элемента, если есть что удалять, и 0 если нет +// +char pop(Stack *stack); + +// +// Проверка стэка на пустоту +// Параметр - Указатель на стек +// Вернет 1 если стек пуст, 0 если нет +// +int is_empty(Stack *stack); From a69c0144786cd2bb44ebc176138af19c25b5f0c5 Mon Sep 17 00:00:00 2001 From: DolzhenkoAlexa Date: Fri, 26 Dec 2025 01:03:10 +0300 Subject: [PATCH 3/4] Remove text in stack.h --- src/hw5_stack/stack.h | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/hw5_stack/stack.h b/src/hw5_stack/stack.h index 9d61041..517dd1b 100644 --- a/src/hw5_stack/stack.h +++ b/src/hw5_stack/stack.h @@ -1,41 +1,23 @@ -// Description: Этот модуль предоставляет функции для работы со стеком: -// создание стэка (init_stack), добавление (push), извлечение элементов (pop) и проверка на пустоту (is_empty). -// Нужен для двух задач: Продвинутый баланс скобок и Сортировочная станция -// +// Этот модуль предоставляет функции для работы со стеком для Продвинутый баланс скобок и Сортировочная станция: #pragma once #define STACK_SIZE 512 -// // Структура для стека -// В ней создаем char массив для хранения элементов длины STACK_SIZE и переменную для хранения индекса верхнего элемента -// typedef struct { char elements[STACK_SIZE]; // массив для хранения int topIndex; // индекс верхнего элемента } Stack; -// // Создание стека -// В качестве параметра берем указатель на стек (для изменения самого стека, а не только копии) -// void init_stack(Stack *stack); -// // Добавление элемента в стек -// Параметр - Указатель на стек и значение элемента для добавления -// void push(Stack *stack, char value); -// // Удаление элемента из стека с проверкой на пустоту -// Параметр - Указатель на стек // Вернет значение элемента, если есть что удалять, и 0 если нет -// char pop(Stack *stack); -// // Проверка стэка на пустоту -// Параметр - Указатель на стек // Вернет 1 если стек пуст, 0 если нет -// -int is_empty(Stack *stack); +int stackEmptiness(Stack *stack); From 7c6c05861f0af8a18b8d3ba1ec051fe54417e2f2 Mon Sep 17 00:00:00 2001 From: DolzhenkoAlexa Date: Fri, 26 Dec 2025 01:05:41 +0300 Subject: [PATCH 4/4] Update stack.c --- src/hw5_stack/stack.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hw5_stack/stack.c b/src/hw5_stack/stack.c index 826ee07..6f15f12 100644 --- a/src/hw5_stack/stack.c +++ b/src/hw5_stack/stack.c @@ -1,6 +1,6 @@ #include "stack.h" -// Создаем стэк, делая значение top равным -1 ("нет элементов") +// Создаем стек, делая значение top равным -1 ("нет элементов") void init_stack(Stack *stack) { stack->topIndex = -1; } @@ -13,7 +13,7 @@ void push(Stack *stack, char value) { // Берем верхний элемент и удаляем его char pop(Stack *stack) { - if (StackEmptiness(stack)) { // Проверяем не пуст ли стек + if (stackEmptiness(stack)) { // Проверяем не пуст ли стек return '\0'; // Возвращаем '\0' если пуст (в таком виде, потому что нужно вернуть char) } char value = stack->elements[stack->topIndex]; // Сохраняем верхний элемент @@ -22,7 +22,7 @@ char pop(Stack *stack) { } // Проверяем пуст ли стек (Чтоб не убрать "пустоту") -int StackEmptiness(Stack *stack) { +int stackEmptiness(Stack *stack) { if (stack->topIndex == -1) { return 1; // 1 - стек пуст } else {