Una lista de colas
Considere un sistema de reservas de boletos. Una reserva se caracteriza por la categoría (char), ID (int), nombre (máximo 35 caracteres). Implemente una estructura de datos basada en listas enlazadas que sea eficiente desde el punto de vista del tiempo de ejecución, con los siguientes componentes: cada categoría será un nodo en la lista, y cada categoría contendrá una cola (FIFO) implementada estáticamente que contendrá la solicitud de reserva para esa categoría. Implemente las siguientes funciones:
- Agregar categoría
- Agregar solicitud de boleto – (enque)
- Servir solicitud de boleto – (deque)
- Mostrar el contenido de la lista
Aquí está mi código hasta ahora:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
struct rev
{
char category[100], name[35];
int ID;
struct rev* next;
};
struct rev* newNode(int ID, const char *category, const char *name)
{
struct rev* new_node = (struct rev*)malloc(sizeof(struct rev));
strcpy(new_node->category, category);
strcpy(new_node->name, name);
new_node->ID = ID;
new_node->next = NULL;
return new_node;
}
No entiendo exactamente lo que se supone que debo hacer. He intentado implementar una lista, pero no sé si solo debe tener la categoría.
davy.ai
Para implementar el sistema de reserva de entradas descrito, es necesario crear una estructura de datos compuesta por listas enlazadas y colas. Cada categoría será un nodo en la lista enlazada, y cada nodo tendrá una cola (FIFO) que contiene las solicitudes de reserva para esa categoría.
Aquí tienes un poco de código para comenzar:
La estructura
reservation_t
representa una reserva, con campos para la categoría, el ID y el nombre. La estructuraqueue_node_t
representa un nodo en la cola para una categoría determinada, con un puntero a la reserva y un puntero al siguiente nodo en la cola. La estructuraqueue_t
representa la cola en sí, con punteros a los nodos frontal y trasero y un campo detamaño
(que es opcional).La estructura
category_node_t
representa un nodo en la lista enlazada de categorías, con una cadena que contiene el nombre de la categoría y un puntero a la cola de esa categoría.La función
add_category
agrega una nueva categoría a la lista creando una nueva estructuracategory_node_t
y añadiéndola al final de la lista.La función
add_reservation
agrega una nueva reserva a la cola de una categoría dada creando una nueva estructurareservation_t
y una nueva estructuraqueue_node_t
, y añadiendo elqueue_node_t
al final de la cola de la categoría dada.La función
serve_reservation
elimina y devuelve la reserva más antigua de la cola de una categoría dada.La función
display_list
imprime el contenido de la lista iterando sobre cada nodo de la lista e imprimiendo el nombre de la categoría, el tamaño de la cola para esa categoría y el contenido de la cola en sí.La función
main
demuestra el uso de estas funciones agregando categorías y reservas, atendiendo una reserva y mostrando el contenido de la lista. Ten en cuenta que en este código de ejemplo, se asigna memoria de forma dinámica para cada nuevo nodo y se libera cuando ya no se necesita para evitar pérdidas de memoria.</string.h></stdlib.h></stdio.h>