No tengo muy claro lo que necesitas. Lo que no me ha quedado claro es como necesitas que sea el funcionamiento de esa pila y cola. Si es con apuntadores y memoria dinámica o si es simplemente con con strings o arrays.
Si el caso se trata de esto primero, puedes darte una idea en estos artículos que explican como manejar pilas y colas en pascal:
http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/pascal/respuestas/631567/pilas-pascalo
http://ejemplos.mis-algoritmos.com/archives/108Si es otro el caso, puedes aclararmelo mejor y yo vere como puedo ayudarte.
En lineas generales tu programa trata de que leas un string desde el teclado carácter a carácter y lo vayas metiendo en una pila y en una cola a la vez:
program pilas_colas;
uses crt;
var
cadena:string[255];
i:integer;
caracter:char;
begin
clrscr;
i:=0;
cadena:='';
repeat
caracter:=readkey; (*se lee caracter a caracter*)
write(caracter);
if(caracter<>'.')then
begin
i := i + 1;
cadena := cadena + caracter;
(*meter_en_pila(caracter);
meter_en_cola(caracter);*)
end;
until caracter='.';
(*palindrome(cadena);*)
writeln('');
readkey;
end.
Luego de esto, aplicar las operaciones básicas de pilas y colas (que ahí es donde se debe definir bien que tipo de pilas y colas usar), para ver si la cadena es palindromo, es decir, si es lo mismo al derecho que al revés.
Recuerda que mientras en una cola los elementos entran por el final, en una pila lo hacen por el principio. Lo que te da la facilidad de que en la cola la cadena te quede al derecho y en la pila te quede al revés, lo que harías seria simplemente verificar si lo que esta en la pila es exactamente igual a lo que esta en la cola y de ahí puedes decir que la cadena es o no palindromo.
Ya sabes, cualquier duda me la haces saber y yo con gusto tratare de ayudarte...
NOTA: Por favor valora mi esfuerzo, dando puntuación a mi respuesta.