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
- 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
- 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
- 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
- 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
- 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
- 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
- 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