Реализовать простой стек, с функциями добавления и удаления элементов - C (СИ)
Формулировка задачи:
Реализовать простой стек на си, с функциями добавления в стек и удаления из него, а также проверки пустой ли стек.
Решение задачи: «Реализовать простой стек, с функциями добавления и удаления элементов»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> #define STACK_MAX_CAPACITY 200 struct Stack_of_char { char data[STACK_MAX_CAPACITY]; int dest_idx; }; void stack_of_char_init(struct Stack_of_char* st) { st->dest_idx = 0; } int stack_of_char_push(struct Stack_of_char* st, char ch) { if(st->dest_idx == STACK_MAX_CAPACITY) return 0; st->data[st->dest_idx] = ch; ++st->dest_idx; return 1; } int stack_of_char_pop(struct Stack_of_char* st, char* pch) { if(st->dest_idx == 0) return 0; --st->dest_idx; if(pch != NULL) *pch = st->data[st->dest_idx]; return 1; } int stack_of_char_empty(const struct Stack_of_char* st) { return st->dest_idx == 0; } int main(void) { char ch; struct Stack_of_char st; stack_of_char_init(&st); for(ch = 'z'; ch >= 'a'; --ch) stack_of_char_push(&st, ch); while(!stack_of_char_empty(&st)) { stack_of_char_pop(&st, &ch); putchar(ch); } putchar('\n'); return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем максимальную вместимость стека (200 элементов)
- Создаем структуру для представления стека: char data[STACK_MAX_CAPACITY]; int dest_idx;
- Инициализируем стек: st->dest_idx = 0;
- Функция stack_of_char_push добавляет элемент в стек: если индекс dest_idx равен максимальной вместимости стека, возвращает 0; записывает элемент в массив data; увеличивает значение dest_idx на 1.
- Функция stack_of_char_pop удаляет элемент из стека: если индекс dest_idx равен 0, возвращает 0; уменьшает значение dest_idx на 1; если указанный указатель pch не равен NULL, записывает в него удаленный элемент;
- Функция stack_of_char_empty проверяет, пуст ли стек: возвращает 1, если стек пуст (dest_idx равен 0), иначе возвращает 0.
- В функции main создаем экземпляр стека и инициализируем его
- Добавляем элементы в стек с помощью функции stack_of_char_push, используя цикл for
- Пока стек не пуст, удаляем его элементы с помощью функции stack_of_char_pop и выводим их на экран с помощью функции putchar
- Выводим символ новой строки с помощью функции putchar
- Возвращаем EXIT_SUCCESS.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д