Ciao gente,
devo implementare un programma che mi permetta di inserire o cancellare degli elementi in una lista sia in testa che in coda tramite dei puntatori.
Il codice che ho scritto è il seguente:
Questo codice gestisce una lista di tipo LIFO ma in realtà non è quello che mi serve.codice:#include <iostream.h> class dequeue { private: class elem_dequeue { public: int numero; private: elem_dequeue *ptr_prossimo; friend class dequeue; }; public: elem_dequeue *ptr_inizio; dequeue() { ptr_inizio = NULL;} //costruttore della classe stack void push(int a); int pop(); void push_end(int a); int pop_end(); }; void dequeue::push(int a) { elem_dequeue *ptr_nuovo; ptr_nuovo = new elem_dequeue; ptr_nuovo->numero = a; ptr_nuovo->ptr_prossimo = ptr_inizio; ptr_inizio = ptr_nuovo; } int dequeue::pop() { int temp; if (ptr_inizio != NULL) { temp = ptr_inizio->numero; ptr_inizio = ptr_inizio->ptr_prossimo; return temp; } else { cout<<"Elementi dello stack finiti!"; return 0; } } void dequeue::push_end(int a){ if (!ptr_inizio) { ptr_inizio=new elem_dequeue; ptr_inizio->numero=a; //inserisce il dato// ptr_inizio->ptr_prossimo=NULL; //fa puntare l'ultimo elelmento a NULL// return;} elem_dequeue *ptr_temp; ptr_temp=ptr_inizio; while (1) { if (ptr_temp->ptr_prossimo==NULL) break; ptr_temp=ptr_temp->ptr_prossimo; } elem_dequeue *ptr_nuovo; ptr_nuovo=new elem_dequeue; ptr_temp->ptr_prossimo=ptr_nuovo; ptr_nuovo->ptr_prossimo=NULL; ptr_nuovo->numero=a; } int dequeue::pop_end () { if (!ptr_inizio) //se non ci sono elementi// {cout<<"non ci sono elementi!!"; return 0;} if (ptr_inizio->ptr_prossimo==NULL) { int temp; temp=ptr_inizio->numero; ptr_inizio=NULL; return temp; } elem_dequeue *ptr_temp; ptr_temp=ptr_inizio; while (1) { if (ptr_temp->ptr_prossimo->ptr_prossimo==NULL) break; ptr_temp=ptr_temp->ptr_prossimo; } int temp; ptr_temp->ptr_prossimo->numero; ptr_temp->ptr_prossimo=NULL; return temp; } void main() { int a; char scelta; dequeue pila; while( a != 0) { cout<<"Inserisci un valore da inserire nello stack! 0 per uscire \n"; cin>>a; if (a != 0) { pila.push(a); } } do { cout<<"\nVuoi prelevare un dato dalla pila (s o n)?"; cin>> scelta; if (scelta != 'n') cout<<"\n"<<pila.pop(); }while ( scelta != 'n'); }
Potete darmi una mano?????
Grazie!!!