note
Moron
The main raison d'etre of a linked list is that in compiled languages (but not in Perl) arrays are not supported by element deletion or insertion. But I said 'main' rather than 'only'. It is perfectly reasonable that a class might call for a peer to peer relationship and that just happens to be identical in implementation to a linked list. So without further ado, and covering my eyes to anything too complex that has been suggested (sorry no time before Christmas!) that becomes my recommendation, to whit, create a SIMPLE object solution something like:
<code>
package P2Pr;
sub new {
shift();
my $ref = bless {};
$ref -> link( @_ ) if ( @_ ); # support one-stop calls
return $ref;
}
sub link {
my ( $obj, $relation, $other ) = @_;
$obj -> { $relation } = $other;
}
# ...
1;
# common or garden example ...
use P2Pr;
my $carriage1 = P2Pr -> new();
my $train = P2Pr -> new( 'afore', $carriage1 );
$carriage1 -> link ( 'abaft', $train );
my $carriage2 = new( 'abaft', $carriage1 );
$carriage1 -> link( 'afore', $carriage2 );
</code>
Perl should automatically delete objects that have been unlinked from the list, although I am in the habit of making sure by applying a "delete" + object reference before bypassing a node into oblivion (in the example that could be done just by linking both neighbours of the victim node to each other).
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-493758">
<p>-M<p><i>Free your mind</i>
</div></div>
590415
590415