// cColContas.cpp
// Definição da classe cColContas
// 28 de Novembro de 2000

#include "cColContas.h"

cElLista::cElLista( int NrConta ) : Conta(NrConta)
{
	Prox = 0;
}

	
cColContas::cColContas()
{
	Sentinela = new cElLista(0);
	Tail = Sentinela;
	NrElementos = 0;
}

cColContas::~cColContas()
{
	cElLista *pEl, *pProxEl;

	pEl = Sentinela ;

	while ( pEl )
	{
		pProxEl = pEl->Prox; 
		delete pEl;
		pEl = pProxEl ;
	}

}


void cColContas::Adicionar( int NrConta )
{
	cElLista *pNovo;

	pNovo = new cElLista( NrConta );
	
	Tail->Prox = pNovo;
	Tail = pNovo ;
	NrElementos ++;

}

bool cColContas::Remover( int NrConta )
{
	cElLista *pEl, *pAnt;

	pEl = ProcurarConta(NrConta, &pAnt );

	if ( pEl )
	{
		pAnt->Prox = pEl->Prox ;

		if ( pEl == Tail )  Tail = pAnt;

		delete pEl;

		NrElementos --;

		return true;
	}
	else
		return false;

}

cConta *cColContas::ObterConta( int NrConta )
{
	cElLista* pEl;
	
	pEl= ProcurarConta( NrConta );

	if ( pEl )
		return &( pEl->Conta );
	else
		return 0;
}


cElLista *cColContas::ProcurarConta( int NrConta, cElLista** pAnterior )
{
	cElLista *pEl, *pAnt;

	pAnt = Sentinela;
	pEl = Sentinela->Prox ;

	while ( pEl && pEl->Conta.NrConta != NrConta )
	{
		pAnt = pEl;
		pEl = pEl->Prox ;
	}

	if ( pAnterior ) *pAnterior = pAnt;

	return pEl;
}
