——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)
{ p >
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
}
}