ZGSOJ 1850: Порядок извлечения (стек и очередь)

Для двух линейных структур с ограниченным количеством операций: стека (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

Guess you like

Origin blog.csdn.net/qq_51314244/article/details/130109533