ZGSOJ 1850:出栈顺序(栈和队列)

对于两种操作受限的线性结构,栈(Array, LIFO)和队列(Queue,FIFO)两种结构可应用于出栈顺序的计算。其基本结构为:

Que out ← Stack st ← Que in

其中,核心操作为:

def fun(){

    if(isEmpty Stack) Push(stack,e);

    else 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

猜你喜欢

转载自blog.csdn.net/qq_51314244/article/details/130109533