Для двух линейных структур с ограниченным количеством операций: стека (Array, LIFO) и очереди (Queue, FIFO) для расчета порядка извлечения можно применить две структуры. Его основная структура:
Очередь на выходе ← Stack st ← Очередь на входе
Среди них основными видами деятельности являются:
определенно весело() {
если (isEmpty Stack) Push (стек, е);
иначе if(isFull Stack) while(!isEmpty Stack) Pop(Stack);
else{ //Копируем существующую структуру и результат i
//Случай первого извлечения стека (нужна рекурсия)
//Случай первой отправки стека (нужна рекурсия)
}}
Решение учителя Ванга:
//На самом деле, я не очень разбираюсь в возврате назад... но просмотр cnt кажется очень продвинутым, и вся функция идеальна
#include <stdio.h>
#include <stdlib.h>
typedef struct {int* arr; int size; int maxSize;} Stack;
Stack* createStack(int maxSize) {
Stack* stack = (Stack*)malloc(sizeof(Stack));
stack->arr = (int*)malloc(sizeof(int) * maxSize);
stack->size = 0;
stack->maxSize = maxSize;
return stack;
}
void freeStack(Stack* stack) {free(stack->arr); free(stack);}
Stack* pushToStac