Pense en trabajar el TAD como un array de punteros,
typedef unsigned int nat;
typedef char *descripcion;
struct repPedidos{
nat Ident;
descripcion pedido;}
typedef repPedidos *TPedidos;
typedef TPedidos *ListaPedidos;
pero a medida planteaba soluciones me surgen mas dudas,
Insertar un pedido con identificador i ∈ (0 ≤ i ≤ K) y descripción d, en una colección de pedidos p,
siempre que no exista otro pedido con el mismo identificador i en p; en caso contrario la operación
no tendrá efecto.
si fuera el caso de un array, como yo lo pense no tiene mucho sentido dar un i como pide la funcion insertar, ya que podria llevar el arreglo con tope e insertar en el siguiente al tope hasta que tope sea = k.
/*Eliminar el pedido más antiguo (el primero ingresado) de una colección de pedidos no vacía y
devolver la descripción de dicho pedido.*/
Si quisiera implementar esta funcion en O(1) a diferencia de insertar que seria simplemente p[tope+1] = TPedidos; o P[i] = new TPedidos etc... que es una asignacion con un if previo para revisar si es vacia o no. No puedo realizarla, cada vez que borre un elemento tendria que o llevar la cuenta de que posicion del arreglo es el actual mas viejo o corres todos los elementos hasta el tope a la izquierda.
Como sugiere la letra pareciera que el TAD pedidos deberia ser realizado como una cola ( FIFO ) pero para insertar en una cola debo preguntarle a todos los elementos si su Identificador es igual a i y el peor caso de eso es O(n).
Podrian darme una mano en la resolucion, hay algo que no estoy tomando en cuenta?