Manual de xsEasyC
Como utilizar Pilas

La librería xsstacks de xsEasyC proporciona funciones para el manejo de las operaciones de Pilas. Los Tipos De Datos posibles que se permiten manejar en los elementos de una Pila son los ya vistos anteriormente: TIPO_CADENA, TIPO_CARACTER, TIPO_ENTERO y TIPO_DOBLE.

A continuación se presentan las Funciones que incluye la librería en el orden sugerido de uso. Los ejemplos de Código son tomados del directorio de ejemplos de la librería.

  • pilaInicializar
    Función para inicializar una Pila para su uso.
    Esta función utiliza 1 parámetro:
    Pila *pila. Este parámetro es correspondiente a una variable de Tipo Pila la cual se inicializará.

    Lo primero que debe de hacerse es declarar una variable de Tipo Pila e inicializarla.
    El siguiente ejemplo muestra como declarar una variable de Tipo Pila e Inicializarla para su posterior uso.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Imprimiendo la Pila cuanto esta Inicializada");

    // Imprime la Pila
    pilaImprimir(pila);
    CL;

    El Ejemplo anterior primeramente define la variable pila del Tipo Pila; y posteriormente utiliza la función para Inicializarla.


  • pilaMeter
    Función para Meter un Elemento en la Pila.
    Esta función utiliza 3 parámetros:
    Conjunto *conjunto. Este parámetro es correspondiente a una variable de Tipo Pila del cual se recibe su dirección de memoria.
    Entero tipo. Este parámetro es para indicar el Tipo de Dato que se va a insertar en la Pila. Los valores posible para este parámetro son: TIPO_CADENA, TIPO_ENTERO, TIPO_CARACTER y TIPO DOBLE.
    .... Este parámetro es para indicar el dato que se va a Meter en la Pila, el cual puede ser de los 4 posibles tipos de datos indicados en el parámetro previo.

    El siguiente ejemplo muestra como Meter elementos a una Pila.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Imprimiendo la Pila cuanto esta vacia");

    // Imprime la Pila
    pilaImprimir(pila);
    CL;

    // Imprimir
    Imprimir("Meter elementos en la Pila");

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);
    CL;

    // Imprimiendo la Pila
    Imprimir("Elementos de la Pila, el tope es el de la izquierda");
    pilaImprimir(pila);
    CL;

    El Ejemplo anterior primeramente se define una variable de Tipo Pila la cual se inicializa. Posteriormente se meten elementos en la pila utilizando la función correspondiente. Finalmente se despliega la Pila para observar los elementos insertados. Es importante recalcara que el tope de la Pila es el último valor insertado, y este se encuentra a la izquierda de la Pila, y será el primero en salir al momento de ejecutar la función pilaSacar.

    La siguiente imagen muestra la ejecución del Código

    pila Meter

  • pilaSacar
    Función para Sacar un Elemento en la Pila.
    Esta función utiliza 1 parámetro:
    Pila *pila. Este parámetro es correspondiente a una variable de Tipo Pila del cual se recibe su dirección de memoria.

    La función devolverá una variable del Tipo ElementoPila, correspondiente al elemento que se encuentre en el Tope de la Pila; el cual es eliminado de la Pila. El siguiente ejemplo muestra como Sacar elementos de una Pila.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Metiendo Elementos en la Pila ...");
    CL;

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);
    pilaMeter(&pila,TIPO_CARACTER,'A');
    pilaMeter(&pila,TIPO_CARACTER,'Z');
    pilaMeter(&pila,TIPO_CADENA,"xsEasyC");

    // Imprimiendo los Elementos de la Pila
    Imprimir("Imprimiendo la Pila ...");
    pilaImprimir(pila);
    CL;

    // Declara variable para elemento de la pila
    ElementoPila elemento;

    // Imprimir
    Imprimir("Sacando e Imprimiendo los Elementos de la Pila");

    // Ciclo para sacar los Elementos de la Pila
    mientras (pilaLongitud(pila)>0)
    {
       // Saca un Elemento de la Pila
       elemento = pilaSacar(&pila);

       // Imprime el Elemento
       pilaImprimirElemento(elemento);
       CL;
    }
    CL;
    Imprimir("Se han Sacado e Impreso todos los elementos de la Pila");

    El Ejemplo anterior primeramente se define una variable de Tipo Pila la cual se inicializa; se le meten algunos Elementos; y se imprime.
    Posteriormente se realiza un ciclo para Sacar uno por uno los elementos de la Pila y es claramente observable como los elementos salen en el orden inverso del que entraron; siguiendo la lógica operativa de una Pila; "el ultimo que entra es el primero en salir".

    La siguiente imagen muestra la ejecución del Código

    pila Meter

  • pilaImprimir
    Función para imprimir los Elementos de la Pila.
    Esta función utiliza 1 parámetro:
    Pila pila. Este parámetro es correspondiente a una variable de Tipo Pila.

    En los códigos previos, se ha utilizado la función para imprimir los elementos de una Pila, por lo que en esta sección no se coloca código correspondiente.

  • pilaImprimirElemento
    Función para Imprimir un Elemento de la Pila.
    Esta función utiliza 1 parámetro:
    ElementoPila elemento. Este parámetro es correspondiente a una variable de Tipo ElementoPila del cual se imprimirá la información.

    El siguiente ejemplo muestra como Sacar elementos de una Pila.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Metiendo Elementos en la Pila ...");
    CL;

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);
    pilaMeter(&pila,TIPO_CARACTER,'A');
    pilaMeter(&pila,TIPO_CARACTER,'Z');
    pilaMeter(&pila,TIPO_CADENA,"xsEasyC");

    // Imprimiendo los Elementos de la Pila
    Imprimir("Imprimiendo la Pila ...");
    pilaImprimir(pila);
    CL;

    // Declara variable para elemento de la pila
    ElementoPila elemento;

    // Imprimir
    Imprimir("Sacando e Imprimiendo los Elementos de la Pila");

    // Ciclo para sacar los Elementos de la Pila
    mientras (pilaLongitud(pila)>0)
    {
       // Saca un Elemento de la Pila
       elemento = pilaSacar(&pila);

       // Imprime el Elemento
       pilaImprimirElemento(elemento);
       CL;
    }
    CL;
    Imprimir("Se han Sacado e Impreso todos los elementos de la Pila");

    El Ejemplo anterior primeramente se define una variable de Tipo Pila la cual se inicializa; se le meten algunos Elementos; y se imprime.
    Posteriormente se realiza un ciclo para Sacar uno por uno los elementos de la Pila y es claramente observable como los elementos salen en el orden inverso del que entraron; siguiendo la lógica operativa de una Pila; "el ultimo que entra es el primero en salir".

    La siguiente imagen muestra la ejecución del Código

    pila Meter

  • pilaLongitud
    Función para obtener el número de Elementos en la Pila.
    Esta función utiliza 1 parámetro:
    Pila pila. Este parámetro es correspondiente a una variable de Tipo Pila.

    El siguiente ejemplo muestra como obtener la Longitud de una Pila.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Variable para la Longitud de la Pila
    Entero longitudPila;

    // Obtiene la Longitud
    longitudPila = pilaLongitud(pila);

    // Desplegando la longitud de la Pila
    imprimirEntero(longitudPila,"La longitud de la Pila es:%d",CON_CAMBIO_LINEA);

    // Imprimir
    Imprimir("Insertando elementos en la Pila");

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);
    CL;

    // Obtiene la Longitud
    longitudPila = pilaLongitud(pila);

    // Imprime la Pila
    Imprimir("Desplegando los Elementos de la Pila, el tope es el de la
    izquierda");
    pilaImprimir(pila);
    CL;

    // Desplegando la longitud de la Pila
    imprimirEntero(longitudPila,"La longitud de la Pila Ahora
    es:%d",CON_CAMBIO_LINEA);

    El Ejemplo anterior primeramente se define una variable de Tipo Pila la cual se inicializa y se obtiene la longitud en este momento la cual es 0.
    Posteriormente se Meten 3 elementos en la Pila, y se vuelve a obtener la longitud en la cual se observa el valor de 3.

    La siguiente imagen muestra la ejecución del Código

    pila Longitud

  • pilaTipo
    Función para obtener el Tipo de la Pila.
    Esta función utiliza 1 parámetro:
    Pila pila. Este parámetro es correspondiente a una variable de Tipo Pila.

    El siguiente ejemplo muestra como obtener el Tipo de la Pila. Si todos los elementos son del mismo Tipo, se obtendrá el valor correspondiente; si no el valor de la función devolverá -1
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Insertando los elementos 41,19 y 6513 en la Pila");

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);
    CL;

    // Imprime la Pila
    Imprimir("Desplegando los Elementos de la Pila, el tope es el de la
    izquierda");
    pilaImprimir(pila);
    CL;

    // Variable para el Tipo de Pila
    Entero tipoPila;

    // Obtiene el Tipo de la Pila
    tipoPila = pilaTipo(pila);

    // Despliega según el tipo
    evaluar (tipoPila)

    {
       siEs TIPO_ENTERO:
          Imprimir("La pila es de Tipo Entero");
          salirEvaluar;

       siEs TIPO_CARACTER:
          Imprimir("La pila es de Tipo Caracter");
          salirEvaluar;

       siEs TIPO_DOBLE:
          Imprimir("La pila es de Tipo Doble");
          salirEvaluar;

       siEs TIPO_CADENA:
          Imprimir("La pila es de Tipo Cadena");
          salirEvaluar;

    }
    CL;

    El Ejemplo anterior primeramente define una variable de Tipo Pila la cual se inicializa y entonces se Meten 3 elementos Enteros. Posteriormente se llama a la función para obtener el Tipo y entonces se despliega el Mensaje correspondiente al Tipo obtenido.

    La siguiente imagen muestra la ejecución del Código

    pila Tipo

  • pilaTope
    Función para conocer el Elemento que está en el Tope de la Pila
    Esta función utiliza 1 parámetro:
    Pila pila. Este parámetro es correspondiente a una variable de Tipo Pila.

    La función devolverá una variable del Tipo ElementoPila, correspondiente al elemento que se encuentre en el Tope de la Pila; Sin eliminarlo de la Pila. El siguiente ejemplo muestra como conocer el elemento que está en la Pila.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Insertando los elementos 41, 19 y 6513 en la Pila");

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);

    // Imprime la Pila
    Imprimir("Desplegando los Elementos de la Pila, el tope es el de la izquierda");
    pilaImprimir(pila);
    CL;

    // Declara variable para elemento de la pila
    ElementoPila elemento;

    Imprimir("Obteniendo el Tope de la Pila");
    elemento = pilaTope(pila);

    Imprimir("Informacion del Tope de la Pila la Pila");
    imprimirEntero(elemento.tipo ,"Tipo :%d",CON_CAMBIO_LINEA);
    si (elemento.tipo==TIPO_ENTERO)
       imprimirEntero(elemento.dato.entero ,"Entero :%d",CON_CAMBIO_LINEA);
    si (elemento.tipo==TIPO_CARACTER)
       imprimirCaracter(elemento.dato.caracter,"Caracter :%c",CON_CAMBIO_LINEA);
    si (elemento.tipo==TIPO_DOBLE)
       imprimirDoble(elemento.dato.doble,"Doble :%lf",CON_CAMBIO_LINEA);
    si (elemento.tipo==TIPO_CADENA)
       imprimirCadena(elemento.dato.cadena ,"Cadena :%s",CON_CAMBIO_LINEA);
    CL;

    Imprimir("Imprimiendo la pila despues de haber obtenido el Tope; sigue igual");
    pilaImprimir(pila);

    El Ejemplo anterior primeramente se define una variable de Tipo Pila la cual se inicializa; se le meten algunos Elementos; y se imprime.
    Posteriormente se obtiene el Tope de la Pila, se imprime su Tipo e Información y a continuación se vuelve a imprimir la Pila para verificar que esta función obtiene el elemento pero sin Eliminarlo de la Pila.

    La siguiente imagen muestra la ejecución del Código

    pila Tope

  • pilaVacia
    Función para verificar si la Pila está vacía
    Esta función utiliza 1 parámetro:
    Pila pila. Este parámetro es correspondiente a una variable de Tipo Pila.

    La función devolverá VERDADERO/FALSO si la Pila tiene elementos o no respectivamente.

    El siguiente ejemplo muestra como verificar si la Pila está vacía o no.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Imprimiendo la Pila cuanto esta Inicializada");
    pilaImprimir(pila);
    CL;

    // Verifica si está vacía
    si (pilaVacia(pila))
       Imprimir("La Pila esta vacia");
    deOtroModo
       Imprimir("La Pila no esta vacia");

    // Imprimir
    Imprimir("Insertando elementos en la Pila");

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);
    CL;

    Imprimir("Imprimiendo la Pila despues de Meter Elementos");
    pilaImprimir(pila);
    CL;

    // Verifica si está vacía
    si (pilaVacia(pila))
       Imprimir("La Pila esta vacia");
    deOtroModo
       Imprimir("La Pila no esta vacia");

    El Ejemplo anterior primeramente se define una variable de Tipo Pila la cual se inicializa; y en ese momento se valida si la Pila está vacía.
    Posteriormente se le Meten elementos a la Pila, y de nueva cuenta se vuelve a validar si la Pila está vacía.

    La siguiente imagen muestra la ejecución del Código

    pila Vacia

  • pilaVaciar
    Función para vaciar la Pila eleminando todos sus elementos
    Esta función utiliza 1 parámetro:
    Pila *pila. Este parámetro es correspondiente a una variable de Tipo Pila de la cual se recibe su dirección de memoria.

    El siguiente ejemplo muestra como vaciar una Pila.
    Ejemplo:

    // Variable para la pila
    Pila pila;

    // Inicializa la Pila
    pilaInicializar(&pila);

    // Imprimir
    Imprimir("Insertando los elementos 41,19 y 6513 en la Pila");
    CL;

    // Mete elementos en la Pila
    pilaMeter(&pila,TIPO_ENTERO,41);
    pilaMeter(&pila,TIPO_ENTERO,19);
    pilaMeter(&pila,TIPO_ENTERO,6513);

    // Imprime la Pila
    Imprimir("Desplegando los Elementos de la Pila, el tope es el de la izquierda");
    pilaImprimir(pila);
    CL;

    Imprimir("Se esta vaciando la Pila");
    pilaVaciar(&pila);
    CL;

    Imprimir("Imprimiendo la pila despues de vaciarla");
    pilaImprimir(pila);

    El Ejemplo anterior primeramente se define una variable de Tipo Pila la cual se inicializa; y se le agregan elementos.
    Posteriormente se llama a la función para vaciar la Pila.

    La siguiente imagen muestra la ejecución del Código

    pila Vacia