No uso CCS pero aquí un ejemplo genérico:
PHP:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 200 /*tamaño de la pila*/
void push(int i);
int pop(void);
int *tos, *p1, stack[SIZE];
/* stack[] es el vector que contiene los datos */
int main(void)
{
int value;
tos = stack; /* tos points to the top of stack */
p1 = stack; /* initialize p1 */
// --- sólo para probar la pila ---
do {
printf("Enter value: ");
scanf("%d", &value);
if(value != 0) push(value);
else printf("value on top is %d\n", pop());
} while(value != -1);
//----------------------------------------
}
void push(int i)
{
p1++; //aumenta el número de elementos
if(p1 == (tos+SIZE))
printf("Stack Overflow.\n"); //pila llena
*p1 = i; //coloca dato en la pila "apilar"
}
int pop(void)
{
if(p1 == tos)
printf("Stack Underflow.\n"); //pila vacía
p1--;
return *(p1+1); //saca dato de la pila "desapilar"
}
Esta es una pila de números enteros, pero puedes modificarla.
La pila estará vacia al empezar el laberinto, podrías usar un código que te convenga para identificar cruces y direcciones por ejemplo:
0xAA = paso hacia adelante
0xFF = cruce
0x0E = giro a la izquierda (cuando se encuentre cruce)
0xE0 = giro a la derecha (cuando se encuentre cruce)
Según el robot avance grabas en la pila los códigos de arriba (u otros) para que se registre lo que hizo y si no se encuentra salida haga los pasos contrarios hasta encontrar 0xFF, para tomar otros camino.
Para que el robot resuleva el laberinto no es obligatorio que uses una pila, podrías usar un vector que vaya registrando el recorrido de tu robot.