ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Pilas y colas Capítulo 19


Enviado por   •  20 de Enero de 2022  •  Apuntes  •  2.457 Palabras (10 Páginas)  •  85 Visitas

Página 1 de 10

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;

...

Descargar como (para miembros actualizados)  txt (8.4 Kb)   pdf (93.5 Kb)   docx (17.6 Kb)  
Leer 9 páginas más »
Disponible sólo en Clubensayos.com