Ho implementato una pila di caratteri con le relative funzioni di push() e pop(), isEmpty() e stampa(), utilizzando il concetto di classe e di lista linkata. Non riesco però ad individuare dove si trovi l'errore che non mi permette di visualizzare il carattere inserito, invece ottengo come Output il suo corrispettivo codice ASCII.
Qualcuno sarebbe così gentile da aiutarmi ad individuarlo?
Ecco riportato il codice:
codice:#include <iostream.h> class BOX { private: char carattere; BOX *next; public: BOX(); void set_carattere(char nuovo_carattere); int get_carattere(); BOX *get_next(); void collegaBox(BOX *nextBox); }; class LISTA { public: BOX *start; BOX *last; BOX *box; LISTA(); void push(); void pop(); void top(); bool isEmpty(); void stampa(); }; // Metodi della classe BOX BOX::BOX() { next = NULL; } void BOX::set_carattere(char nuovo_carattere) { carattere = nuovo_carattere; } int BOX::get_carattere() { return carattere; } BOX *BOX::get_next() { return next; } void BOX::collegaBox(BOX *nextBox) { next = nextBox; } // Metodi della classe LISTA LISTA::LISTA() { start = NULL; last = NULL; box = NULL; } void LISTA::push() { char lettera; cout << "Inserire il carattere da immettere nella pila : "; cin >> lettera; box = new BOX; box->set_carattere(lettera); if (start == NULL) { start = box; last = box; } else { last->collegaBox(box); last = box; } } void LISTA::pop() { BOX *temp; BOX *temp1; if (start == NULL) cout << "La pila e' vuota!\n"; else if (start == last) { temp = start; cout << "Il carattere eliminato e' : " << temp->get_carattere() << "\n"; delete temp; start = NULL; last = NULL; } else { temp = start->get_next(); temp1 = start; while (temp->get_next() != NULL) { temp = temp->get_next(); temp1 = temp1->get_next(); } cout << "Il carattere eliminato e' il seguente : " << temp->get_carattere() << "\n"; delete temp; last = temp1; temp1->collegaBox(NULL); } } void LISTA::top() { if (start == NULL) cout << "La pila e' vuota!\n"; else cout << "L'ultimo carattere della pila e' : " << last->get_carattere() << "\n"; } bool LISTA::isEmpty() { if (start == NULL) cout << "La pila e' vuota!\n"; else cout << "Sono presenti degli elementi all'interno della pila!\n"; } void LISTA::stampa() { BOX *temp; temp = start; if (start == NULL) cout << "La pila e' vuota!\n"; else { cout << "Gli elementi della pila sono : \n"; while (temp->get_next() != NULL) { cout << temp->get_carattere(); if (temp != last) cout << " \n"; temp = temp->get_next(); } cout << last->get_carattere() << "\n"; } } main() { LISTA pila; int choice = 0; do { cout << "-------------------------------------------\n"; cout << " PILA (DI CARATTERI) \n"; cout << "-------------------------------------------\n"; cout << "Digitare 1 Push; 2 Pop; 3 Top; 4 isEmpty; 5 Stampa; 99 per uscire dal programma.\n"; cout << "Effettuare una scelta : "; cin >> choice; switch (choice) { case 1 : pila.push(); break; case 2 : pila.pop(); break; case 3 : pila.top(); break; case 4 : pila.isEmpty(); break; case 5 : pila.stampa(); break; case 99 : cout << "Exiting program !\n\n"; break; default : cout << "Sorry! Bad menu selection!\n\n"; break; } } while (choice != 99); }