home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / DATABASE / XCLAS20D.ZIP / LISTAS.PRG < prev    next >
Encoding:
Text File  |  1993-03-12  |  1.2 KB  |  64 lines

  1. #include "xclass.ch"
  2.  
  3. FUNCTION Main()
  4.    LOCAL o
  5.    o := NodList( 1 )
  6.    o:Insert( 5 )
  7.    o:Insert( 4 )
  8.    o:Insert( 3 )
  9.    o := o:Insert( 2 )
  10.    Ver( o )
  11.    o := o:GoTop()
  12.    o:sig:sig:Delete()
  13.    Ver( o )
  14.  
  15. PROCEDURE Ver( o )
  16.    while .t.
  17.       qout( o:Valor )
  18.       if ( o:Sig == NIL )
  19.          exit
  20.       else
  21.          o := o:Sig
  22.       endif
  23.    end
  24.  
  25. CLASS NodList     //Clase nodo de lista
  26. VAR Valor
  27. VAR Sig, Ant
  28. MESSAGE Insert  METHOD NLTInsert( x )
  29. MESSAGE Delete  METHOD NLTDelete()
  30. MESSAGE GoTop   METHOD NLTGoTop()
  31. CONSTRUCTOR New METHOD NLTNew( x )
  32. END CLASS
  33.  
  34. METHOD NLTNew( x )
  35.    ::Valor := x
  36. RETURN Self
  37.  
  38. METHOD NLTInsert( x )
  39.    LOCAL OldSig := ::Sig
  40.    ::Sig := NewObject( ::ClassH )   //Si hacemos ::Sig := Lista( x ) no sirve
  41.    ::Sig:Valor  := x                //para heredar
  42.    ::Sig:Ant    := Self
  43.    if( OldSig != NIL )              
  44.       ::Sig:Sig    := OldSig
  45.       OldSig:Ant := ::Sig
  46.    endif
  47. RETURN ::Sig
  48.  
  49. METHOD NLTDelete()
  50.    if ! ( ::Sig == NIL )
  51.       ::Sig:Ant := ::Ant
  52.    endif
  53.    if ! ( ::Ant == NIL )
  54.       ::Ant:Sig := ::Sig
  55.    endif
  56. RETURN Self
  57.  
  58. METHOD NLTGoTop()
  59.     LOCAL o := Self
  60.     while o:Ant != NIL
  61.        o := o:Ant
  62.     end
  63. RETURN o
  64.