Visualizzazione dei risultati da 1 a 6 su 6

Discussione: implementare una coda

  1. #1

    implementare una coda

    considerando la seguente classe:

    codice:
     
    
    class dequeue {
                   int valore;
                   dequeue *succ;
                   public:
                          dequeue();
                          dequeue(int val);
                          ~dequeue();
                          static dequeue *inserimentoT(dequeue *); //testa
                          static dequeue *inserimentoC(dequeue *); //coda
                          static dequeue *cancellaT(dequeue *);//testa
                          static dequeue *cancellaC(dequeue *);//coda
                          static void stampa (dequeue *);
    };
    
    int main()
    {
    int scelta,numero;
     dequeue *Nodo=NULL;
     bool finito = false;
    
    while(! finito){
    cout << " ---------- MENU' DELLE SCELTE ---------- "<< endl << endl
         << "1-Inserimento in Testa" << endl
         << "2-Inserimento in Coda" << endl
         << "3-Cancellazione in Testa" << endl
         << "4-Cancellazione in Coda" << endl
         << "5-Esci" << endl << endl
         << " ---------------------------------------- " << endl;
    
    cin >> scelta;
    
    switch (scelta)
    {
    case 1:
          Nodo=dequeue::inserimentoT(Nodo);
          cout << "La lista è così configurata" << endl << endl;
          dequeue::stampa(Nodo);
          break;
    case 2:
    	   Nodo =  dequeue::inserimentoC(Nodo);
           cout << "La lista è così configurata" << endl << endl;
           dequeue::stampa(Nodo);
            break;
    case 3:
    
         break;
    case 4:
    break;
    
    case 5:
         finito=true;
         break;
    
    default :
            cout << "Errore: Scelta non valida!Numero sconosciuto!!" << endl << endl;
    }
    }
          system("PAUSE");
          return 0;
    }
    l'inserimento in coda come avviene???
    se provo a raggiungere l'ultimo elemento mi perdo tutti gli altri
    se mi conservo l'elemento di testa me ne conserva 2
    purtroppo il codice l'ho cancellato per disperazione!!!
    nel main nn ci sn le opzioni 3e 4 perchè nn le ho ancora costruite qs cmq nn implica l'inserimento di un elemento in coda!!!

  2. #2
    Per inserire in coda in una lista di cui conservi solo il puntatore alla testa (se conservi anche quello alla coda è più semplice) devi distinguere tra una lista vuota ed una lista con almeno un elemento.Se la lista è vuota semplicemente crei un nuovo nodo con punatatore al prossimo nullo e ci fai puntare la testa della lista.se la lista ha allmeno un elemento fai parti un ciclo del genere

    codice:
    t=malloc(etc...)
    t->caio =khkdh
    .....
    t->next=NULL;
    
    punt* p;
    for(p=testa;p->next;p=p->next);//nota il punto e virgola
    p->next=t;
    In pratica ti posizioni sull'ultimo elemento (con quel ciclo for che termina quando raggiunge un nodo con il next=NULL)e poi metti il next dell'ultimo uguale al nuovo nodo da inserire.Claro?
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    L'esempio che ti ho fatto io sulle liste non ti dà idee? per inserire in testa devi creare un nuovo elemento e aganciare la coda; per inserire in coda ti crei un puntatore temporaneo alla testa coi cui scorri la coda fnche il campo next non è NULL; quindi agganci l'elemento creato e ritorni la lista originaria. In entrambi i casi, se la coda è NULL devi semplicemente ritornare l'elemto appena creato.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    uhm nn mi riesce...mi perdo i puntatori strada facendo!!!

    codice:
     /* Inserisce l'elemento in coda */
    dequeue *dequeue::inserimentoC(dequeue *pNodo)
    {
     dequeue *newNodo = new dequeue();
     dequeue *testa,*coda,*temp,*temp1;
     char choice = '\0';
    
    
    
          if(pNodo == NULL)
          pNodo=newNodo;
          testa=pNodo;
          //coda=pNodo;
         for (coda=testa;coda->succ;coda=coda->succ);
         coda->succ=newNodo;
    
    
     cout << "Inserire un nuovo elemento?[S/N]";
     cin >> choice;
    
     while((choice == 's')||(choice== 'S')){
     dequeue *newNodo = new dequeue();
    
         coda->succ=newNodo;
    
    cout << "Inserire un nuovo elemento?[S/N]";
     cin >> choice;
     }
    return testa;
    };

  5. #5

  6. #6
    9178angel, la prossima volta non dimenticare di specificare nel titolo della discussione linguaggio e versione: regolamento

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.