так что я пытаюсь перегрузить оператор - в очереди, чтобы удалить общие номера с другой очередью из очереди. пример: очередь A: [5 4 3 7] очередь B: [5 2 1 7]
AB
A = [4 3]
я сделал это:
CFilaInteiros& operator-(const CFilaInteiros& b)
{
if ( inicio == NULL )
cout << "Fila vazia..." << endl;
else
{
CNoFila * aux = inicio;
while( aux != NULL )
{
if(aux->dados==b->dados) retiraDaFila(aux->dados);
aux = aux->proximo;
}
}
}
Я пишу это, потому что это говорит, что я должен Mutch код, вот заголовок:
#ifndef CFilaInteiros_h
#define CFilaInteiros_h
using namespace std;
class CFilaInteiros;
class CNoFila{
int dados;
CNoFila *proximo;
friend class CFilaInteiros; // permite a esta classe aceder atributos private
};
class CFilaInteiros
{
private:
CNoFila *inicio, *fim;
public:
CFilaInteiros(void);
~CFilaInteiros(void);
void insereNaFila(const int item);
bool retiraDaFila(int &item);
void escreveFila(void) const;
bool filaVazia(void) const { return (inicio == NULL ); }
CFilaInteiros& operator-(const CFilaInteiros& b)
{
if ( inicio == NULL )
cout << "Fila vazia..." << endl;
else
{
CNoFila * aux = inicio;
while( aux != NULL )
{
if(aux->dados==b->dados) retiraDaFila(aux->dados);
aux = aux->proximo;
}
}
}
};
#endif
retiradafila (берет узел из очереди):
bool CFilaInteiros::retiraDaFila(int &item){
if (inicio == NULL) return false;
item = inicio->dados;
CNoFila * aux = inicio;
inicio = aux->proximo;
if (inicio == NULL) fim = NULL;
delete aux;
return true;
}