Pilas y colas Capítulo 19
Enviado por 10_Computacion • 20 de Enero de 2022 • Apuntes • 2.457 Palabras (10 Páginas) • 100 Visitas
Pilas y colas
Capítulo 19
EJERCICCIO 19.1
/* Archivo pilarray.h */
#include <stdio.h>
#include <stdlib.h>
#define MaxTamaPila 100
typedef struct
{
TipoDato listapila[MaxTamaPila];
int cima;
} Pila;
/* Operaciones sobre la Pila */
void CrearPila(Pila* P);
void Insertar(Pila* P,const TipoDato elemento);
TipoDato Quitar(Pila* P);
void LimpiarPila(Pila* P);
/* Operación de acceso a Pila */
TipoDato Cima(Pila P);
/* verificación estado de la Pila */
int PilaVacia(Pila P);
int PilaLlena(Pila P);
/* Archivo pilarray.c
Implementación de operaciones sobre pilas
*/
typedef char TipoDato;
#include "pilarray.h"
/* Inicializa la pila a pila vacía */
void CrearPila(Pila* P)
{
P -> cima = -1;
}
/* poner un elemento en la pila */
void Insertar(Pila* P,const TipoDato elemento)
{
/* si la pila está llena, termina el programa */
if (P->cima == MaxTamaPila-1)
{
puts("Desbordamiento pila");
exit (1);
}
/* incrementar puntero cima y copiar elemento en listapila */
P->cima++;
P->listapila[P->cima] = elemento;
}
/* Quitar un elemento de la pila */
TipoDato Quitar(Pila* P)
{
TipoDato Aux;
/* si la pila está vacía, termina el programa */
if (P->cima == -1)
{
puts("Se intenta sacar un elemento en pila vacía");
exit (1);
}
/* guardar elemento de la cima */
Aux = P->listapila[P->cima];
/* decrementar cima y devolver valor del elemento */
P->cima--;
return Aux;
}
/* verificar pila vacía */
int PilaVacia(Pila P)
{ /*devuelve el valor lógico resultante de expresión cima == -1 */
return P.cima == -1;
}
/* verificar si la pila está llena */
int PilaLlena(Pila P)
{
return P.cima == MaxTamaPila-1;
}
/* quitar todos los elementos de la pila */
void LimpiarPila(Pila* P)
{
P->cima = -1;
}
TipoDato Cima(Pila P)
{
if (P.cima == -1)
{
puts("Se intenta sacar un elemento en pila vacía");
exit (1);
}
return P.listapila[P.cima];
}
/* Archivo paldromo.c */
typedef char TipoDato;
#include "pilarray.h"
#include <ctype.h>
int main()
{
char palabra[100], ch;
Pila P;
int j, palmo;
CrearPila(&P);
/* Lee la palabra */
do {
puts("\n Palabra a comprobar si es palíndromo");
for (j = 0; (ch = getchar())!='\n'; )
{
palabra[j++] = ch;
Insertar(&P,ch); /* pone en la pila */
}
palabra[j] = '\0';
/* comprueba si es palíndromo */
palmo = 1;
for (j = 0; palmo && !PilaVacia(P); )
{
palmo = palabra[j++] == Quitar(&P);
}
LimpiarPila(&P);
if (palmo)
printf("\n La palabra %s es un palíndromo \n",palabra);
else
printf("\n La palabra %s no es un palíndromo \n",palabra);
printf("\n ¿ Otra palabra ?: "); scanf("%c%*c",&ch);
}while (tolower(ch) == 's');
return 0;
}
Apartado 19.4.4
#define MaxTamQ 100
typedef struct
{
int frente;
int final;
TipoDato listaQ[MaxTamQ];
}Cola;
void CrearCola(Cola* Q)
{
Q->frente = 0;
Q->final = 0;
}
/* insertar elemento en la cola */
void InsertarQ(Cola* Q,TipoDato elemento)
{ /* terminar si la cola está llena */
if (Qllena(*Q))
{
puts("desbordamiento cola");
exit (1);
}
/* asignar elemento a listaQ y actualizar final */
Q->final = (Q->final + 1)% MaxTamQ;
...