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:

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');

}
Questo codice gestisce una lista di tipo LIFO ma in realtà non è quello che mi serve.
Potete darmi una mano?????
Grazie!!!