00001 // LDoble.h: interface for the LDoble class. 00002 00003 #ifndef LDoble_h 00004 #define LDoble_h 00005 00006 typedef unsigned short int TDato; 00007 typedef unsigned long int TMayor; 00008 00009 /// Nodo de la lista. 00010 class NDoble { 00011 public: 00012 TDato Dato; ///< Valor almacenado. 00013 NDoble *Sig,*Ant; ///< Punteros de la lista doblemente enlazada. 00014 00015 public: 00016 NDoble(TDato dato=0) : Dato(Dato), Sig(0), Ant(0) { } 00017 virtual ~NDoble() { } 00018 }; 00019 00020 #define TRUE 1 00021 #define FALSE 0 00022 00023 typedef int Boolean; 00024 typedef NDoble* PNDoble; 00025 00026 /// Lista doblemente enlazada. 00027 class LDoble { 00028 PNDoble Prim,Ult; /*,*Cte*/ 00029 int CantNodos; 00030 public: 00031 int CantRefs; 00032 LDoble(); 00033 //Post: devuelve TRUE si no tiene elementos, sino FALSE. 00034 virtual Boolean Vacia(); 00035 //Post: Elimina todos los elementos de la lista y libera la memoria. 00036 virtual void Vaciar(); 00037 /*Post: inserta el elemento dat en la posición anterior al corriente. 00038 si la lista estaba vacía lo inserta en el primer lugar. dat 00039 es el nuevo corriente. */ 00040 virtual int InsAntes(PNDoble& Cte, TDato dat); 00041 /*Post: inserta el elemento dat en la posición posterior al corriente. 00042 si la lista estaba vacía lo inserta en el primer lugar. dat 00043 es el nuevo corriente. */ 00044 virtual int InsDespues(PNDoble& Cte, TDato dat); 00045 /* direccion indica adonde se mueve el corriente. Valores posibles: 00046 'p' (primer elemento), 's' (elemento siguiente), 'a' (elem. anterior), 00047 'u' (último elemento). */ 00048 virtual int MoverCte(PNDoble& Cte, char direccion); 00049 /*Pre : La lista no está vacía. 00050 Post: Devuelve el valor del Corriente. */ 00051 virtual TDato ObtCte(PNDoble Cte); 00052 /*Pre : La lista no está vacía. 00053 Post: Modifica el valor del elemento Corriente, asignandole dat. 00054 Si existe el corriente devuelve 0. */ 00055 virtual int ModifCte(PNDoble& Cte, TDato dat); 00056 /*Pre : La lista no está vacía. 00057 Post: Elimina el elemento actual (Corriente). El corriente es el 00058 siguiente. Si era el último es el anterior. */ 00059 virtual int ElimCte(PNDoble& Cte); 00060 /*Post: Devuelve la cantidad de elementos guardados en la lista. */ 00061 virtual int CantElem(); 00062 /* Destructor: libera todo el espacio ocupado por la lista */ 00063 virtual ~LDoble(); 00064 }; 00065 00066 #endif 00067 00068 // EOF: LDoble.h
1.4.1