Implementación de Listas, Colas y Pilas en C++ con Ejemplo de Casillas de Peaje

Clasificado en Informática

Escrito el en español con un tamaño de 4,67 KB

Estructura de Datos: Lista

  • adicionarFinal(Lista, Dato): Agrega un elemento al final de la lista. Devuelve void.
  • localizarDato(Lista, Dato): Encuentra el dato en la lista. Devuelve un puntero al dato si lo encuentra; de lo contrario, devuelve null.
  • obtenerDato(Lista, Dato, Ptr): Obtiene el dato referenciado por un puntero determinado dentro de la lista. Devuelve void.
  • colocarDato(Lista, Dato, Ptr): Coloca (actualiza) el dato en un nodo (referenciado por un puntero) determinado de la lista. Devuelve void.

Estructura de Datos: Cola

  • encolar(Cola, Dato): Agrega un elemento al final de la cola. Devuelve void. (Nota: Se asume que recibe un dato a encolar).
  • desencolar(Cola): Elimina el elemento del principio de la cola. Devuelve void.
  • getDato(Nodo): Obtiene el dato contenido en un nodo específico. (Nota: El tipo de retorno dependerá de la implementación).
  • primero(Cola): Devuelve un puntero al primer dato de la cola (sin eliminarlo).

Estructura de Datos: Pila

  • push(Pila, Dato): Agrega un elemento en la cima de la pila. Devuelve void.
  • pop(Pila): Elimina y devuelve el elemento de la cima de la pila.
  • top(Pila): Devuelve (sin eliminar) el elemento de la cima de la pila.

Ejemplo de Código: Ingresar Vehículo a Cola de Casilla


// --- INGRESA VEHÍCULO A COLA DE CASILLA --- 

int opcion;
printf("Ingresar número de casilla para el vehículo: ");
// Se asume el uso de std::cin para C++
std::cin >> opcion;

// Se asume que 'Casillas' es el tipo de dato para una casilla
Casillas aux;
crear(aux); // Inicializa la estructura auxiliar
setIdCasilla(aux, opcion);

// Se asume que listCasillas es una Lista que contiene elementos de tipo Casillas
// Se asume que PtrNodoLista es el tipo de puntero a nodo de la lista
PtrNodoLista punt = localizarDato(listCasillas, aux);

if (punt != nullptr) { // Usar nullptr en C++ moderno
    printf("Casilla encontrada. Ingrese datos del vehículo:\n");
    printf("Patente: ");
    std::string patentina;
    std::cin >> patentina;

    printf("Tipo de auto (entero): ");
    int tipoauto;
    std::cin >> tipoauto;

    // Se asume que 'Autos' es el tipo de dato para un vehículo
    Autos autos;
    crear(autos); // Inicializa la estructura del auto
    setPatente(autos, patentina);
    setTipo(autos, tipoauto);

    // Obtiene la casilla completa de la lista (puede ser necesario para acceder a la cola)
    obtenerDato(listCasillas, aux, punt);

    // Encola el auto en la cola correspondiente a la casilla encontrada
    // Se asume que getColaAutos devuelve una referencia a la Cola
    encolar(getColaAutos(aux), autos);

    // Actualiza la casilla en la lista principal con la cola modificada
    colocarDato(listCasillas, aux, punt);

    printf("Vehículo agregado a la casilla %d.\n", opcion);

} else {
    printf("Error: Casilla con ID %d no encontrada.\n", opcion);
}


Archivo de Cabecera: Casillas.h


#ifndef CASILLAS_H_INCLUDED
#define CASILLAS_H_INCLUDED

#include "Cola.h" // Asegúrate que define la estructura Cola
// #include "Autos.h" // Sería necesario si Autos se usa directamente aquí

// Definición de la estructura para una Casilla de peaje
typedef struct Casilla {
    int idCasilla;    // Identificador único de la casilla
    Cola colaAutos;   // Cola que almacena los autos esperando en esta casilla
} Casillas; // El typedef 'Casillas' se refiere a la estructura 'Casilla'

// --- Prototipos de Funciones para Casillas ---

// Inicializa una estructura Casillas
void crear(Casillas &casilla);

// Libera recursos de una estructura Casillas (si es necesario)
void eliminar(Casillas &casilla);

// Establece el ID de la casilla
void setIdCasilla(Casillas &casilla, int idCasilla);

// Obtiene el ID de la casilla
int getIdCasilla(Casillas &casilla);

// Establece la cola de autos para la casilla (posiblemente para inicialización)
void setColaAutos(Casillas &casilla, Cola colaAutos);

// Obtiene una referencia a la cola de autos de la casilla
// Permite modificar la cola directamente (ej: encolar/desencolar)
Cola& getColaAutos(Casillas &casilla);

#endif // CASILLAS_H_INCLUDED

Entradas relacionadas: