Реализовать простой стек, с функциями добавления и удаления элементов - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем максимальную вместимость стека (200 элементов)
  3. Создаем структуру для представления стека: char data[STACK_MAX_CAPACITY]; int dest_idx;
  4. Инициализируем стек: st->dest_idx = 0;
  5. Функция stack_of_char_push добавляет элемент в стек: если индекс dest_idx равен максимальной вместимости стека, возвращает 0; записывает элемент в массив data; увеличивает значение dest_idx на 1.
  6. Функция stack_of_char_pop удаляет элемент из стека: если индекс dest_idx равен 0, возвращает 0; уменьшает значение dest_idx на 1; если указанный указатель pch не равен NULL, записывает в него удаленный элемент;
  7. Функция stack_of_char_empty проверяет, пуст ли стек: возвращает 1, если стек пуст (dest_idx равен 0), иначе возвращает 0.
  8. В функции main создаем экземпляр стека и инициализируем его
  9. Добавляем элементы в стек с помощью функции stack_of_char_push, используя цикл for
  10. Пока стек не пуст, удаляем его элементы с помощью функции stack_of_char_pop и выводим их на экран с помощью функции putchar
  11. Выводим символ новой строки с помощью функции putchar
  12. Возвращаем EXIT_SUCCESS.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы