virtualword
Te invitamos a registrarte para poder acceder a todo el contenido gratuito que esta comunidad provee.

Saludos Wink

Lección 024: Listas Encadenadas Simples

Ir abajo

Lección 024: Listas Encadenadas Simples

Mensaje  Kyshuo Ayame el Mar Nov 05, 2013 11:05 am

Ejercicios Estos son una continuación de los ejercicios de punteros, solo que orientados al trabajo con listas, por eso comienzan desde el número 5:

Ejercicio 5: Dado el siguiente código que permite crear una lista encadenada:
Código:
TYPE
   apuntador = ^registro;
   registro = RECORD
      dato : ...; (* integer, char, real, ... *)
      sigreg : apuntador;
   END;

VAR
   apuntaInic : apuntador;
   apuntaActual : apuntador;
   indice : integer;

BEGIN
new(apuntaInic);
apuntaActual := apuntaInic;
FOR indice := 1 TO 3 DO
BEGIN
   new(apuntaActual^.sigreg);
   apuntaActual := apuntaActual^.sigreg
END;
apuntaActual^.sigreg := NIL;
END.
¿Cómo modificarían el código anterior si se desea, mediante la inclusión de una tercera variable de tipo apuntador, apuntar al último registro de la lista? Suponiendo que el tipo del campo ‘dato’ en el registro definido anteriormente es de tipo char, escriban un procedimiento en Pascal llamado Buscar que exhiba un mensaje que indique si un valor de tipo char se encuentra o no en la lista.
El cabezal del procedimiento es el siguiente:

Código:
procedure Buscar(c : char; apuntaInic : apuntador)
donde c es el char a buscar y apuntaInic es la referencia del comienzo de la lista.

==========================================================================

Ejercicio 6:
1.Definan un tipo llamado ListEnt, el cual representa una lista encadenada de enteros.

2. Escribir un procedimiento en Pascal que permita insertar un entero al principio de la lista encadenada. El cabezal del procedimiento es el siguiente:

Código:
Procedure InsertarPrincipio(valor: integer; VAR lista: ListEnt);
3. Escribir un procedimiento en Pascal que permita eliminar el primer elemento de una lista encadenada. El cabezal del procedimiento es el siguiente:

Código:
procedure EliminarPrincipio (VAR lista: ListEnt);
==========================================================================

Ejercicio 7: Dada la siguiente definición:
Código:
Type
   ListChar = ^registro;
   registro = RECORD
      campo: char;
      siguiente : ListChar
   END;
1. Escribir una función en Pascal que permita insertar un carácter al final de una lista encadenada de caracteres.
Ponga especial atención en no modificar la lista con la cual se invoca a la función, sino que se debe copiar toda la lista, y operar sobre la copia.
El cabezal de la función es el siguiente:

Código:
function InsertarUltimo (valor :char; lista: ListChar):ListChar;
2. Escribir un procedimiento en Pascal que permita eliminar los primeros cant caracteres (siendo cant una variable dada, mayor o igual a cero) de una lista encadenada de caracteres. El cabezal del procedimiento es el siguiente:

Código:
procedure DescartarComienzo(cant : integer; VAR lista: ListChar);
3. Escribir una función en Pascal que permita obtener, a partir de una lista de caracteres, otra lista con los caracteres que se encuentran entre la posición “indBase” e “indSup” de la lista original (siendo “indBase“ e “indSup” números enteros mayores o iguales a cero). El cabezal de dicha función es el siguiente:

Código:
function SubCadena (indBase, indSup : integer; lista : ListChar) : ListChar;
=========================================================================
Almacén de Productos 2b:

En esta oporutnidad no agregaremos ninguna funcionalidad nueva al sistema sino que cambiaremos su implementación interna para un mejor manejo de la memoria. De este modo cambiaremos únicamente la definición del tipo Productos y el tipo Elemento para implementar unalista encadenada simple:

Código:
Elemento= RECORD
      Nombre: CadenaChar;
      Stock: TNaturales;
      Precio: Real;
      Categoria: Categorias;
      ID: TNaturales;
      Sig: Productos;
END;

Productos= ^Elemento;
Como el cambio de estructura ha sido tan grande llevará a que la implementación de las operaciones cambie también ya que ahora hay que recorrer una lista encadenada y no un arreglo.

NOTA: El cambio es de implementación, no de diseño. Esto implica que no se agregan ni quitan operaciones y que la firma de las existentes se mantiene igual.

=========================================================================

Navegación:
avatar
Kyshuo Ayame
Admin

Mensajes : 105
Fecha de inscripción : 14/11/2012
Edad : 29

Ver perfil de usuario http://virtualworld.forouruguay.net

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.