• Publicidad

Listas ligadas en Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Listas ligadas en Perl

Notapor Poldon » 2011-09-06 14:00 @625

Tengo una gran duda, verán, quería hacer una lista ligada en Perl, solo para práctica, porque sé que en Perl rara vez se usan, pero estoy practicando POO en Perl y es uno de los ejercicios que se me ocurrió, "Una lista ligada ordenada", pero no he podido porque simplemente no encuentro la manera, si alguien pudiera hacerme el favor de poner el código sería perfecto.
Poldon
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-09-06 13:52 @619

Publicidad

Re: Listas ligadas en Perl

Notapor pvaldes » 2011-09-06 14:35 @649

Por definición las listas no llevan orden, podrías crear algo similar creando un hash y ordenando el hash con sort() y luego cogiendo los valores ordenados como una "lista", pero no acabo de ver qué tipo de salida quieres conseguir.

O podrías ordenar la lista con sort() directamente si los elementos siguen algún orden alfabético o numérico.
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Listas ligadas en Perl

Notapor Birei » 2011-09-06 15:46 @698

Hola,

Echa un vistazo a:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perldoc perllol
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Saludos,
Birei
Birei
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2011-06-19 13:27 @602

Re: Listas ligadas en Perl

Notapor explorer » 2011-09-06 16:04 @711

Bienvenido a los foros de Perl en español, Poldon.

Las listas enlazadas se pueden construir fácilmente en Perl, siguiendo la definición clásica de las listas: cada elemento (nodo) de la lista es una estructura que contiene un valor (la información), una referencia al siguiente nodo de la lista y, opcionalmente, una referencia al nodo anterior.

Birei y pvaldes se refieren a las listas de elementos que se crean con los array y hash de Perl. En los array, solo tenemos un valor escalar como información del nodo, y no hay referencias a los nodos antecedentes y consecuentes porque todos los nodos están indexados por su posición, así que es fácil moverse entre ellos. Y en los hash, los valores se indexan de forma directa a través de su clave.

Tienes razón de que en Perl se use muy poco, y es porque con los hash y array se resuelven de forma cómoda los problemas que de forma clásica resolvían las listas enlazadas.

Una de las muchas formas de hacerlo en Perl, sería así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub agregar_nodo {
  2.     my($info, $nodo_anterior) = @_;   # los parámetros son la información a guardar y el nodo anterior en la lista
  3.  
  4.     my $nodo;                         # creamos el nuevo nodo
  5.  
  6.     $nodo_anterior->{next} = \$nodo;  # unimos el nodo al nodo anterior (nodo anterior deja de ser el último)
  7.  
  8.     $nodo->{info} = $info;            # guardamos la información
  9.     $nodo->{next} = 0;                # Marcamos el nodo como último de la lista
  10.  
  11.     return \$nodo;
  12. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En CPAN hay algunos módulos que implementan los algoritmos clásicos de las listas. Por ejemplo:
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Listas ligadas en Perl

Notapor Poldon » 2011-09-06 20:06 @879

Gracias, explorer, me has sido de mucha ayuda, en todo caso que me trabe, preguntaré por PM. XD
Poldon
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-09-06 13:52 @619


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 28 invitados