Hola, habría distintas maneras de hacerlo. Lo primero es tener claro que una pila es una estructura de datos donde sólo se puede interactuar con un elemento: el que está en la cima de la pila. Puedes simular pilas usando arrays (vectores), o bien puedes definir una pila usando punteros. Para usar punteros necesitas conocimientos más avanzados.
Crear una pila simulada con arrays para insertar los títulos de los libros:
TYPE
TIPOPILA=RECORD
DATOS:=ARRAY[1.. MAX] OF STRING;
CIMA:=0… MAX
END;
VAR
PILA1,PILA2:TIPOPILA;
Aquí por ejemplo PILA1.CIMA te indica cuál es el elemento en la cima
La adición de un elemento en la pila la harías así:
PILA1.CIMA:=PILA1.CIMA +1;
PILA1.DATOS[PILA1.CIMA]:=ELEMENTOAINSERTAR;
Crear una pila basada en punteros:
TIPOPILA:=^NODO
NODO=RECORD
INFO:=STRING;
SIG:=TIPOPILA
END;
Aquí tenemos una estructura de datos recursiva, esto es más complejo de entender.
Lo más sencillo puede ser que definas tu pila usando arrays. En ella inserta los libros (cada libro con su índice). Cuando tengas la pila llena, puedes hacer una búsqueda eliminando el elemento de esa pila y pasándolo a la otra buscando una coincidencia.