Ejercicio 6 - Usar arreglo circular

Ejercicio 6 - Usar arreglo circular

de Joel Cabrera Dechia -
Número de respuestas: 1

Buenas!

Quería consultar si podría ser un arreglo circular una posible implementación de la estructura.
En el video utiliza utiliza otra implementación que creo que utiliza menos memoria:

Me gustaría saber si mi implementación usando arreglo circular tiene algún error en términos generales, y si podría llegar a tener alguna desventaja con respecto a la implementación del video. 

Algo que me hace ruido de mi implementación, es que al crear el arreglo de pedidos en la función crearPedido, estos quedan indefinidos. En el video por ejemplo los inicializa en false porque utiliza un arreglo de booleanos, pero yo, ¿cómo podría hacer? ¿podría asignarles NULL? En caso de que sea posible ¿valdría la pena?
Recuerdo haber leído que es buena practica no dejar cosas sin definir, pero acá no se si seria realmente necesario porque me manejo con ini y fin.

 

Saludos,

En respuesta a Joel Cabrera Dechia

Re: Ejercicio 6 - Usar arreglo circular

de Fernando Fernandez -
Hola
Está bien que no inicialices el arreglo porque lo usás en el rango determinado por las referencias ini y fin y eso lo tenés controlado (aunque habría que ver como sería borrar).

El problema es que para insertar hay que comprobar si el identificador ya está. La inserción debe hacerse en O(1), por lo que esa comprobación también debe ser O(1). Usás la función existePedido que no parece que pueda cumplirse en ese orden con la estructura definida.

En la solución propuesta hay dos estructuras. Una es una cola implementada con nodos enlazados. La otra es el arreglo de booleanos, que es el que se inicializa, que resuelve el problema de comprobar se existe el pedido en O(1).
El arreglo que vos definís no tiene el mismo objetivo que ese arreglo de booleanos, sino el de la cola de la primera estructura. Y parece estar bien.