Página principal | Lista de namespace | Jerarquía de la clase | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros

LDoble.cpp

Ir a la documentación de este archivo.
00001 // LDoble.cpp: implementation of the LDoble class.
00002 //
00003 //////////////////////////////////////////////////////////////////////
00004 
00005 #include "LDoble.h"
00006 
00007 //////////////////////////////////////////////////////////////////////
00008 // Construction/Destruction
00009 //////////////////////////////////////////////////////////////////////
00010 
00011 LDoble::LDoble():Prim(0),Ult(0),CantNodos(0), CantRefs(1)
00012 {
00013 
00014 }
00015 
00016 LDoble::~LDoble()
00017 {
00018         CantRefs--;
00019         if (CantRefs==0)
00020                 Vaciar();
00021 }
00022 Boolean LDoble::Vacia()
00023 {       
00024         if (Prim==0)
00025                 return(TRUE);
00026         else
00027                 return(FALSE);
00028 }
00029 int LDoble::MoverCte(PNDoble& Cte, char direccion)
00030 {
00031         if (Vacia()==FALSE) {
00032                 switch (direccion) {
00033                         case 'p':Cte=Prim;
00034                                          break;
00035                         case 'u':Cte=Ult;
00036                                          break;
00037                         case 'a':if (Cte->Ant==0)
00038                                                 return(1);
00039                                          else
00040                                                 Cte=Cte->Ant;
00041                                          break;
00042                         case 's':if (Cte->Sig==0)
00043                                                 return(1);
00044                                          else
00045                                                 Cte=Cte->Sig;
00046                                          break;
00047                         default : return(1);
00048                                          break;
00049                 }
00050                 return(0);
00051         }
00052         else
00053         {       Cte = 0;
00054                 return(1);}
00055 }
00056         
00057 
00058 int LDoble::InsAntes(PNDoble& Cte, TDato dat){
00059         NDoble *p=new NDoble;
00060         p->Dato=dat;
00061         p->Sig=Cte;
00062         if (Cte!=0) 
00063                 if (Cte->Ant==0) {
00064                         p->Ant=0;
00065                         Cte->Ant=p;
00066                         Prim=p;}
00067                 else {
00068                         p->Ant=Cte->Ant;
00069                         Cte->Ant->Sig=p;
00070                         Cte->Ant=p;}
00071         else{   
00072                 Prim=p;
00073                 Ult=p;
00074                 p->Ant=0;
00075                 p->Sig=0;
00076         }
00077         Cte=p;
00078         CantNodos++;
00079         return(0);
00080 }
00081 
00082 int LDoble::InsDespues(PNDoble& Cte, TDato dat){
00083         NDoble *p=new NDoble;
00084         p->Dato=dat;
00085         p->Ant=Cte;
00086         if (Cte!=0) 
00087                 if (Cte->Sig==0) {
00088                         p->Sig=0;
00089                         Cte->Sig=p;
00090                         Ult=p;}
00091                 else {
00092                         p->Sig=Cte->Sig;
00093                         Cte->Sig->Ant=p;
00094                         Cte->Sig=p;}
00095         else{   
00096                 Prim=p;
00097                 Ult=p;
00098                 p->Ant=0;
00099                 p->Sig=0;
00100         }
00101         Cte=p;
00102         CantNodos++;
00103         return(0);
00104 }
00105 TDato LDoble::ObtCte(PNDoble Cte){
00106         return(Cte->Dato);}
00107 
00108 int LDoble::ModifCte(PNDoble& Cte, TDato dat){
00109         if (Cte!=0) {
00110                 Cte->Dato=dat;
00111                 return(0);}
00112         else
00113                 return(1);
00114 }
00115 int LDoble::ElimCte(PNDoble& Cte){
00116         if (Cte==0) 
00117                 return(1);
00118         else{
00119                 if (Cte->Sig==0) 
00120                         Ult=Cte->Ant;
00121                 else
00122                         Cte->Sig->Ant=Cte->Ant;
00123                 if (Cte->Ant==0) 
00124                         Prim=Cte->Sig;
00125                 else
00126                         Cte->Ant->Sig=Cte->Sig;
00127                 NDoble *p=Cte;
00128                 if (Cte->Sig)
00129                         Cte=Cte->Sig;
00130                 else 
00131                         Cte=Cte->Ant;
00132                 delete p;
00133                 CantNodos--;
00134                 return(0);
00135         }
00136 }
00137 
00138 void LDoble::Vaciar() {
00139         NDoble *p;
00140         PNDoble Cte;
00141         Cte=Prim;
00142         while (Cte) {
00143                 p=Cte;
00144                 Cte=p->Sig;
00145                 delete p;
00146         }
00147         Prim=0;
00148         Ult=0;
00149         CantNodos=0;
00150 }
00151 
00152 int LDoble::CantElem() {
00153         return(CantNodos);
00154 }

Generado el Thu Sep 20 12:33:06 2007 para Clase decimal: por  doxygen 1.4.1
Hosted by www.Geocities.ws

1