ciao Hyde
potrei avere una manina su una parte di programma che prevede l'uso di una coda?
Questa coda deve permettere all'utente di inserire una transazione, eliminarla e stampare la sequenza di transazioni?
questa è l'intestazione e non ci son problemi
first è il puntatore alla coda
che viene posizionato alla testa della coda dal costruttore della classe CodaTransazioni
#ifndef _CODATRANSAZIONI_H_
#define _CODATRANSAZIONI_H_
#include "Soggiorno.h"
struct Nodo
{
Transazione*T; //[B]il nodo composto da due campi: T e next[/B]
Nodo*next;
};
class CodaTransazioni
{
private:
Nodo*first;
public:
CodaTransazioni(){first=0;}
bool Empty(){return first==0;}
bool Append(Transazione*);
bool Pop();
bool StampaCoda();
bool MemorizzaTransazioni();
~CodaTransazioni();
};
#endif
1Questa funzione inserisce una transazione nella coda
e mi dice che:
SE la coda è diversa da vuota allora
-crea un altro puntatore alla struttura Nodo e lo inizializza a first, in modo da puntare alla testa della coda.
-while (questo puntatore temp accede al campo next diverso da 0, quindi non elemento di fine coda) , fai accedere tempo ai prossimi campi next
-
temp che accede al campo next ponilo come nuovo nodo??? (questa è strana)-setta i campi di questo nuovo nodo con next =0 e T=Tr dove Tr è il parametro passato alla funzione Append stessa
-poni vero in esito, cioè è avvenuto l'inserimento
questo insomma fa l'inserimento in cosa, giusto?OPPURE-crea nuovo nodo e mettilo in first
-setta i campi del nuovo nodo con tr e 0
-esito è positivo , poichè è avvenuto l'inserimento.
questo fa l'inserimento del primo elemento nella coda giusto?
#include "CodaTransazioni.h"
bool CodaTransazioni::Append(Transazione*Tr)
{
bool esito=false;
if(!Empty())
{
Nodo*temp=first;
while(temp->next!=0) temp=temp->next;
temp->next=new Nodo;
temp->next->next=0;
temp->next->T=Tr;
esito=true;
}
else
{
first=new Nodo;
first->next=0;
first->T=Tr;
esito=true;
}
return esito;
}
2SE la coda è diversa da vuota
-crea un puntatore a Nodo, e lo inizializza a first (testa della coda)
-
mette in first, first che accede ai successivi elementi (questa è strana)-cancella temp
io non ho capito a che serve instanziare tempbool CodaTransazioni::Pop()
{
if(!Empty())
{
Nodo*temp=first;
first=first->next;
delete temp;
return true;
}
else return false;
}
3-crea sempre il solito puntatore temp a nodo, inizializzato alla testa della coda
-while (
temp è diverso da 0, cioè non accede alla fine della coda , giusto?)
questa non l'ho capitaCodaTransazioni::~CodaTransazioni()
{
Nodo*temp=first;
while(temp!=0)
{
temp=first->next;
delete first;
first=temp;
}
first=0;
}
4questa dovrebbe accedere tramite temp al campo T degli elementi della coda , e tramite T che è oggetto della classe Transazioni, richiamare la funzione stampaDati della classe transazioni.
Però non ho capito perchè dopo aver richiamato la funzione c'è una tal funzione
temp=temp->next;
bool CodaTransazioni::StampaCoda()
{
if(!Empty())
{
Nodo*temp=first;
while(temp!=0)
{
temp->T->StampaDati();
temp=temp->next;
}
return true;
}
else return false;
}
5questa funzione secondo il testo dovrebbe essere una funziona che invocata su un oggetto di classe coda, scrive su file di tipo testo i dati relativi a tutte le transizioni in coda......questa me ne preoccuperei dopo
bool CodaTransazioni::MemorizzaTransazioni()
{
if(!Empty())
{
Nodo*temp=first;
while(temp!=0)
{
temp->T->StampaSuFile();
temp=temp->next;
}
return true;
}
else return false;
}