Heap::Elem man page on Alpinelinux

Man page or keyword search:  
man Server   18016 pages
apropos Keyword Search (all sections)
Output format
Alpinelinux logo
[printable version]

Heap::Elem(3)	      User Contributed Perl Documentation	 Heap::Elem(3)

NAME
       Heap::Elem - Base class for elements in a Heap

SYNOPSIS
	 use Heap::Elem::SomeInheritor;

	 use Heap::SomeHeapClass;

	 $elem = Heap::Elem::SomeInheritor->new( $value );
	 $heap = Heap::SomeHeapClass->new;

	 $heap->add($elem);

DESCRIPTION
       This is an inheritable class for Heap Elements.	It provides the
       interface documentation and some inheritable methods.  Only a child
       classes can be used - this class is not complete.

METHODS
       $elem = Heap::Elem::SomeInheritor->new( [args] );
	   Creates a new Elem.	If there is exactly one arg, the Elem's value
	   will be set to that value.  If there is more than one arg provided,
	   the Elem's value will be set to an anonymous hash initialized to
	   the provided args (which must have an even number, of course).

       $elem->heap( $val ); $elem->heap;
	   Provides a method for use by the Heap processing routines.  If a
	   value argument is provided, it will be saved.  The new saved value
	   is always returned.	If no value argument is provided, the old
	   saved value is returned.

	   The Heap processing routines use this method to map an element into
	   its internal structure.  This is needed to support the Heap methods
	   that affect elements that are not are the top of the heap -
	   decrease_key and delete.

	   The Heap processing routines will ensure that this value is undef
	   when this elem is removed from a heap, and is not undef after it is
	   inserted into a heap.  This means that you can check whether an
	   element is currently contained within a heap or not.	 (It cannot be
	   used to determine which heap an element is contained in, if you
	   have multiple heaps.	 Keeping that information accurate would make
	   the operation of merging two heaps into a single one take longer -
	   it would have to traverse all of the elements in the merged heap to
	   update them; for Binomial and Fibonacci heaps that would turn an
	   O(1) operation into an O(n) one.)

       $elem->val( $val ); $elem->val;
	   Provides a method to get and/or set the value of the element.

       $elem1->cmp($elem2)
	   A routine to compare two elements.  It must return a negative value
	   if this element should go higher on the heap than $elem2, 0 if they
	   are equal, or a positive value if this element should go lower on
	   the heap than $elem2.  Just as with sort, the Perl operators <=>
	   and cmp cause the smaller value to be returned first; similarly you
	   can negate the meaning to reverse the order - causing the heap to
	   always return the largest element instead of the smallest.

INHERITING
       This class can be inherited to provide an object with the ability to be
       heaped.	If the object is implemented as a hash, and if it can deal
       with a key of heap, leaving it unchanged for use by the heap routines,
       then the following implemetation will work.

	 package myObject;

	 require Exporter;

	 @ISA = qw(Heap::Elem);

	 sub new {
	     my $self = shift;
	     my $class = ref($self) || $self;

	     my $self = SUPER::new($class);

	     # set $self->{key} = $value;
	 }

	 sub cmp {
	     my $self = shift;
	     my $other = shift;

	     $self->{key} cmp $other->{key};
	 }

	 # other methods for the rest of myObject's functionality

AUTHOR
       John Macdonald, john@perlwolf.com

COPYRIGHT
       Copyright 1998-2007, O'Reilly & Associates.

       This code is distributed under the same copyright terms as perl itself.

SEE ALSO
       Heap(3), Heap::Elem::Num(3), Heap::Elem::NumRev(3), Heap::Elem::Str(3),
       Heap::Elem::StrRev(3).

perl v5.18.2			  2007-04-28			 Heap::Elem(3)
[top]

List of man pages available for Alpinelinux

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net