Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C++] - Pila con liste

  1. #1

    [C++] - Pila con liste

    Nel programma di seguito descritto non riesco a vedere in stampa quello che ho inserito nella lista. Qualcuno sa aiutarmi e dirmi dov'è l'errore.

    #include <iostream>
    #include <cstdlib>
    #include <conio.h>
    using namespace std;

    struct elem
    {
    int info;
    elem *pun;
    };

    class pila
    {
    private:
    elem *testa;
    public:
    pila() {testa = NULL;}
    bool empty(pila& pp);
    int dim(pila pp);
    void push(int val, pila& pp);
    void pop();
    void stampa();
    };

    bool pila::empty(pila& pp)
    {
    if(pp.testa == NULL)
    return false;
    }

    int pila::dim(pila pp)
    {
    elem *punta = 0;
    int i = 0;
    while(punta != NULL)
    {
    punta = pp.testa->pun;
    i++;
    }
    return i;
    }

    void pila:ush(int val, pila& pp)
    {
    pila p;
    pila q;
    for(q.testa = pp.testa; q.testa!=NULL; q.testa = testa->pun)
    p.testa = q.testa;
    q.testa = new elem;
    testa->info = val;
    q.testa = NULL;
    if(pp.testa == NULL)
    pp.testa = q.testa;
    else
    p.testa = q.testa;
    }

    void pila::stampa()
    {
    pila a;
    while(testa != NULL)
    {
    cout << testa->info;
    a.testa = testa->pun;
    }
    }

    int main()
    {
    pila numeri;
    elem valori;
    int num;
    if(numeri.empty(numeri) == false)
    cout << "Pila Vuota." << endl;
    cout << numeri.dim(numeri) << endl << endl;
    cout << "Inserisci un numero nella pila: ";
    cin >> num;
    cout << numeri.dim(numeri) << endl << endl;
    numeri.stampa();
    getch();
    return 0;
    }



  2. #2
    qualcuno sa darmi una risposta ???

  3. #3
    Originariamente inviato da francecco
    qualcuno sa darmi una risposta ???
    Così a prima vista, sembra che nel main dimentichi di chiamare la funzione membro push(),
    ed il valore di num non viene in nessun modo accodato.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  4. #4
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577

  5. #5
    Originariamente inviato da GabbOne
    Postresti spiegare, con parole, il concetto che intendevi esprimere ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  6. #6
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    Sono abbastanza ignorante in fatto di classi ma il metodo stampa mi pare strano...

    codice:
    void pila::stampa(){
      pila a;
      while(testa != NULL){
         cout << testa->info;
         a.testa = testa->pun;
      }
    }
    dichiari a, fino a quando testa non arriva alla fine della lista stampi... ma testa non arriverà mai in fondo, non gli cambi mai valore... semmai lo cambi ad a.testa

    Non è forse così?

    codice:
    void pila::stampa(){
       pila a;
       if (testa!=NULL){
          a.testa=testa;
          while(a.testa!= NULL){
             cout << a.testa->info;
             a.testa = a.testa->pun;
          }
       }
    }

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.