Написать функцию push для stack - C (СИ)
Формулировка задачи:
Добрый день, подскажите пожалуйста, как написать функцию push
Спасибо
#include <stdio.h> #include <stdlib.h> #include <time.h> #define STACK_SIZE 10 #define STACK_EMPTY -1 void push(char [], char, int *, int); void push(char stack[], char item, int *top, int max_size){ }
Решение задачи: «Написать функцию push для stack»
textual
Листинг программы
#include <stdio.h> #include <time.h> #include <stdlib.h> #define STACK_SIZE 10 struct stack { char data[STACK_SIZE]; int idx; }; void stack_init(struct stack *stk) { stk->idx = 0; } int stack_push(struct stack *stk, char c) { if(stk->idx == STACK_SIZE) return 0; stk->data[stk->idx++] = c; return 1; } int stack_pop(struct stack *stk, char *c) { if(stk->idx == 0) return 0; *c = stk->data[--stk->idx]; return 1; } char rand_char(char lo, char hi) { return rand() % (hi - lo) + lo; } int main(void) { struct stack stk; size_t i; srand((size_t) time(NULL)); stack_init(&stk); for(i = 0; i < STACK_SIZE; ++i) { char c = rand_char('!', '~'); if(!stack_push(&stk, c)) { fprintf(stderr, "Error: stack is full\n"); exit(1); } printf("%c (%d)\n", c, c); } puts("----------"); for(i = 0; i < STACK_SIZE; ++i) { char c; if(!stack_pop(&stk, &c)) { fprintf(stderr, "Error: stack is empty\n"); exit(1); } printf("%c (%d)\n", c, c); } exit(0); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
для стандартных функций ввода-вывода, для работы со временем и для генерации случайных чисел. - Определяем размер стека (10 элементов).
- Создаём структуру stack, которая содержит массив данных типа char и целочисленный индекс.
- В функции stack_init инициализируем индекс элемента стека.
- В функции stack_push проверяем, полон ли стек. Если да, то выводим сообщение об ошибке и завершаем программу. Иначе добавляем элемент в стек и выводим его на экран.
- В функции stack_pop проверяем, пуст ли стек. Если да, то выводим сообщение об ошибке и завершаем программу. Иначе извлекаем элемент из стека и выводим его на экран.
- В функции rand_char генерируем случайный символ от заданных символов '!' до '~'.
- В функции main создаём экземпляр стека, инициализируем его и заполняем случайными символами до максимального значения размера стека. Выводим все элементы стека на экран.
- Выводим сообщение о пустом стеке и завершаем программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д