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. Devuelvevoid
.localizarDato(Lista, Dato)
: Encuentra el dato en la lista. Devuelve un puntero al dato si lo encuentra; de lo contrario, devuelvenull
.obtenerDato(Lista, Dato, Ptr)
: Obtiene el dato referenciado por un puntero determinado dentro de la lista. Devuelvevoid
.colocarDato(Lista, Dato, Ptr)
: Coloca (actualiza) el dato en un nodo (referenciado por un puntero) determinado de la lista. Devuelvevoid
.
Estructura de Datos: Cola
encolar(Cola, Dato)
: Agrega un elemento al final de la cola. Devuelvevoid
. (Nota: Se asume que recibe un dato a encolar).desencolar(Cola)
: Elimina el elemento del principio de la cola. Devuelvevoid
.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. Devuelvevoid
.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