Sunteți pe pagina 1din 2

Apuntadores

1. Hacer una versin de la unidad Listas1.pas llamada Listas2.pas que en vez de hacer una
priorizacin incremental por bsquedas, haga una priorizacin absoluta: si se encuentra un
elemento, su componente se pasa a la primera posicin de la lista. Luego hacer una versin del
programa proglistas1.pas llamada proglistas2.pas que utilice la unidad Listas2.

2. Hacer una versin de la unidad Listas1.pas llamada Listas3.pas que realice la carga y agregue
elementos ordenados alfabticamente. Luego hacer una versin del programa proglistas1.pas
llamada proglistas2.pas que utilice la unidad Listas3.

Sugerencia: definir la primitiva Cargar usando Agregar.

Las pruebas deben efectuarse a partir del archivo nombres.txt provisto como ejemplo.

3. Cuando la cantidad de elementos a cargar en memoria es muy grande, si se enlazan en una nica
lista las bsquedas pueden resultar muy costosas en tiempo de procesamiento. Para reducir los
tiempos de bsqueda, se pueden dispersar los elementos en un nmero fijo de listas, por ejemplo
4, en un array[0..3] of tLista, agregndolos o buscndolos en la lista cuyo nmero
resulte de aplicar una funcin al elemento que retorne un nmero entre 0 y 3.

Hacer una versin de la unidad Listas2.pas llamada Listas4.pas que trabaje con un arreglo de 4
listas de elementos de tipo LongWord y en la que las primitivas determinen la lista donde
agregar o buscar un elemento calculando su mdulo 4.

Hacer tambin una versin del programa proglistas2.pas llamada proglistas4.pas que utilice la
unidad Listas4.

Para poder hacer pruebas con muchos elementos, versionar la primitiva Cargar de manera que en
vez de obtener elementos de un archivo de texto, pida al usuario una cantidad de elementos a
generar pseudoaleatoriamente con Random(high(tElemento)). Versionar tambin la
primitiva Reportar para que encabece el listado de los elementos de cada lista indicando el nmero
de lista, y a continuacin los liste agrupndolos de a 6 por lnea y en columnas de 12 caracteres.

4. Hacer una versin de la unidad Listas3.pas llamada Listas5.pas que trabaje con

tElemento = Record

id: LongWord;

nom: String[25]

end;

tLista = Record lId, lNom: ^tComponente end;

1
tComponente = Record

elem: tElemento;

subl: tLista

end;

Como puede verse, la lista es doble y sus componentes deben estar enlazados tanto por orden de
id como por orden de nom. Adems, debe observarse que no puede haber elementos con id
duplicado (antes de agregar un elemento debe comprobarse que no exista uno con el mismo id)
aunque s puede haber ms de uno con igual nom, y en tal caso, los elementos con igual nombre
deben estar ordenados por identificador.

Se debe recargar la primitiva Buscar para encontrar elementos proporcionando un valor de id o


uno de nom. La bsqueda por id debe devolver el nombre de un nico elemento en caso de ser
exitosa, y en igual caso la bsqueda por nom debe devolver un arreglo dinmico con los
identificadores correspondientes al mismo nombre.

Para la primitiva Eliminar, slo se debe indicar un valor de id.

Modificar la primitiva Reportar de manera que en cada lnea del archivo de reporte incluya dos
elementos y las lneas estn ordenadas por identificador del primer elemento y por nombre e
identificador del segundo, simultneamente.

Hacer tambin una versin del programa proglistas3.pas llamada proglistas5.pas que utilice la
unidad Listas3 y confeccionar un archivo de texto con datos de carga adecuados (los elementos no
deben estar ordenados ni por identificador ni por nombre).

S-ar putea să vă placă și