ciao sto implementando una coda con priorità utilizzando una realizzazione con lista ordinata di nodi. sto facnedo il metodo inserisci che prende un valore e una priorità, crea un nodo e lo mette nella posizione di competenza nella lista. il metodo che stro creando mi funziona per l'inserimento dei primi 2 nodi, poi quando ne metto un altro con priorità minore (la priorità maggiore si ha con un numero intero minore) il metodo va in crash ma non so qual'è l'istruzione che dà problemi. ho provato a fare il debug ma questo non parte.
posto il codi del metodo, magari qualche anima buona mi aiuta a capire dove si trova l'istruzione errata.
pricodalo.h
le stro provando tutte ma niente da fare.codice:template<class tipoelem> void pricodalo<tipoelem>::inserisci(tipoelem elem) { cout << "inserire la priorita' da associare al valore " << elem << ": "; int priority; cin >> priority; if(this->pricodavuota()) { pric = new nodopricoda<tipoelem>; pric->setelem(elem); pric->setpri(priority); } else { nodopricoda<tipoelem> *tmp = pric; bool trovato = false; while(!trovato && (tmp != NULL)) { if(priority < tmp->getpri()) { nodopricoda<tipoelem> tmp2; if(tmp == pric) { tmp2.setsuc(tmp); tmp->setprec(&tmp2); pric = &tmp2; } else { tmp2.setsuc(tmp); tmp2.setprec(tmp->getprec()); (tmp->getprec())->setsuc(&tmp2); tmp->setprec(&tmp2); } tmp2.setelem(elem); tmp2.setpri(priority); trovato = true; } else tmp = tmp->getsuc(); } if(!trovato) { tmp = pric; while(tmp->getsuc() != NULL) tmp = tmp->getsuc(); nodopricoda<tipoelem> tmp2; tmp->setsuc(&tmp2); tmp2.setprec(tmp); tmp2.setelem(elem); tmp2.setpri(priority); } } }