Examen julio 2013 ejercicio 1

Examen julio 2013 ejercicio 1

de Ana Carolina Espino Guillotti -
Número de respuestas: 0

Hola quería saber si en lugar de definir InsertPQ como:

PROCEDURE InsertPQ (t : T; prio : CARDINAL; PQ : PQueue): PQueue;
(* Pre: NOT IsFull(PQ). Retorna una nueva cola de prioridad que consiste de
todos los elementos de PQ más el elemento t con su prioridad; comparte memoria con PQ *)

 

Está bien definirlo como:

PROCEDURE InsertPQ (t : T; prio : CARDINAL; Var PQ : PQueue);
(* Pre: NOT IsFull(PQ). Agrega el elemento t con prioridad prio a la cola d prioridad PQ*)

 

O al pedirse la especificación de este TAD tiene que ser si o si como en la primera forma. 

La misma pregunta para otros TAD que definen esa constructora de esta manera.

 

Y otra pregunta es, dice que no pueden haber elementos con la misma prioridad.

¿No debería ponerse eso en las Pre condiciones?  Es decir además de poner "NOT IsFull(PQ)" agregar que no hay elementos con prioridad prio en PQ.

 

Gracias.