Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [c++]

    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!!!

  2. #2
    3 considerazioni
    1) titoli + specifici
    2) il codice inseriscilo tra i tag [*code] [*/code] senza asterisco
    3) disabilita le faccine quando scrivi il codice

    altrimenti diventa difficile leggerti oltre che a mio avviso fastidioso
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.