Preguntas de la prueba del algoritmo del examen de ingreso de posgrado

Dale la vuelta.

——Demasiado vago para escribir.

Parece que las dos pilas comparten un espacio de almacenamiento y el puntero superior de la pila solo puede comenzar desde ambos extremos (un poco como una cola).

Supongamos que las dos pilas son s0 y S1 respectivamente. El puntero superior de la pila inicial de S1 es -1 y el puntero superior de la pila inicial de s2 es n.

estructura typedef

{

elem type stack[N]; //Espacio de almacenamiento de la pila

int top[2];/ /top son los dos punteros superiores de la pila.

} St

ST s; //s es la variable global de la operación.

Voidpush (int i, tipo de elemento e)//Operación de entrada de pila, donde I representa el número de pila y e es el elemento de entrada de la pila.

{

if (i!= 0 | |i!= 1)exit(0); //El número de pila es incorrecto

if(s . top[1]-s . top[0]= = 1)//La pila está llena.

{

printf("¡Lleno!");

Regresar

}

if(I). == 0)s . tack[ s . top[0]] = e; //s0 se coloca en la pila

if(I == 1)s . ]] = e; //s1 a la pila

}

Pop vacío (int i, elemtype ampE) //Operación de pila, donde I representa el número de pila y E es el elemento de pila.

{

If (i!= 0 | |I!= 1)exit(0); //El número de pila es incorrecto

If (i = =0)

{

if(s . top[0]=-1)//La pila s0 está vacía.

{

printf("¡Vacío!");

Regresar

}

else e =; s . pila[s . top[0]-]; //s0 pila

}

if(i==1)

{

if(s . top[1]= = N)//la pila s 1 está vacía.

{

printf("¡Vacío!");

Regresar

}

else e =; s . stack[s . top[1] ]; //s1 abre la pila

}

}