00001 00002 #include "listadoppia.h" 00003 00004 /*di seguito vi sono le definizioni dei metodi della classe listadoppia che mi 00005 serve come appoggio alla codifica*/ 00006 00007 00008 listadoppia::listadoppia() 00009 { 00010 p0 = 0; 00011 p1 = 0; 00012 numelem = 0; 00013 } 00014 00015 listadoppia::~listadoppia() 00016 { 00017 elem* p; 00018 while (p0 != 0) 00019 { 00020 p = p0; 00021 p0 = p0 -> succ; 00022 delete p; 00023 } 00024 } 00025 00026 void listadoppia::inserisci(int n) //inserisce in coda 00027 { 00028 elem* p = new elem; 00029 if (p == 0) throw "memoria"; 00030 p -> info = n; 00031 p -> succ = 0; 00032 p -> prec = p1; 00033 if (p1 != 0) 00034 p1 -> succ = p; 00035 if (p1 == 0) 00036 p0 = p; 00037 p1 = p; 00038 numelem++; 00039 } 00040 00041 int listadoppia::estrai() //estrae in testa 00042 { 00043 if (numelem == 0) "critico"; 00044 elem* p = p0; 00045 int n = p0 -> info; 00046 p0 = p0 -> succ; 00047 if (p0 != 0) p0 -> prec = 0; 00048 else p1 = 0; 00049 delete p; 00050 numelem--; 00051 return n; 00052 } 00053 00054 int listadoppia::numero() //restituisce numelem per mantenere 00055 { return numelem; } // l'occultamento dell'informazione 00056