Buscar

ListaContaCorrente

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

using System;
using System.Collections.Generic;
using System.Text;
namespace SistemaBancario
{
 class ListaContaCorrente
 {
 private CelulaContaCorrente primeiro; // referencia a primeira célula da lista encadeada de contas-correntes.
 // a primeira célula da lista encadeada de contas-correntes corresponde ao nodo cabeça, utilizado apenas para controle.
 private CelulaContaCorrente ultimo; // referencia a última célula da lista encadeada de contas-correntes.
 // construtor que inicializa o nodo-cabeça da lista encadeada.
 public ListaContaCorrente()
 {
 // criação do nodo-cabeça da lista de contas-correntes. O nodo-cabeça é utilizado apenas para controle.
 // o nodo-cabeça é o primeiro nodo da lista encadeada.
 primeiro = new CelulaContaCorrente();
 // quando a lista encadeada é criada, o nodo-cabeça é também o último nodo da lista encadeada.
 ultimo = primeiro;
 }
 // insere o item passado como parâmetro para esse método no final da lista encadeada.
 public void inserirFinal(ContaCorrente cc)
 {
 CelulaContaCorrente aux = new CelulaContaCorrente();
 // inserção de uma nova célula ao final da lista encadeada.
 ultimo.proximo = aux;
 // inserção da conta-corrente, passada como parâmetro para esse método, no final da lista encadeada.
 aux.item = cc;
 // atualização do ponteiro de controle "ultimo" para a última célula da lista encadeada.
 ultimo = ultimo.proximo;
 }
 // retira da lista encadeada a conta-corrente cujo número corresponde ao que foi passado como parâmetro para esse método. Se a conta-corrente tiver sido localizada na lista encadeada e retirada com sucesso, esse método deve retornar a conta-corrente retirada. Caso contrário, esse método deve retornar null.
 public ContaCorrente retirar(int numContaCorrente)
 {
 CelulaContaCorrente aux, anterior;
 // o ponteiro anterior apontará sempre para a célula anterior à célula que estiver sendo inspecionada. 
 anterior = primeiro;
 // o ponteiro aux será utilizado para percorrermos a lista encadeada a procura da célula que deverá ser retirada. 
 aux = primeiro.proximo;
 // enquanto o ponteiro aux não tiver percorrido toda a lista encadeada...
 while (aux != null)
 {
 // se o ponteiro aux estiver apontando para o item que deverá ser retirado...
 if (aux.item.getNumContaCorrente() == numContaCorrente)
 {
 // utiliza-se o ponteiro anterior para "pular" a célula que deve ser retirada da lista encadeada.
 anterior.proximo = aux.proximo;
 if (aux == ultimo)
 {
 // se a célula retirada da lista encadeada era a última, atualizamos o ponteiro de controle "ultimo" para apontar para a célula anterior à que foi retirada.
 // a célula anterior à que foi retirada passa a ser a última célula da lista encadeada.
 ultimo = anterior;
 }
 return aux.item;
 }
 else
 {
 // se ainda não encontramos o item que deverá ser retirado, avançamos na lista encadeada.
 // os ponteiros anterior e aux devem avançar na lista encadeada.
 anterior = aux;
 aux = aux.proximo;
 }
 }
 return null;
 }
 // localiza, na lista encadeada, a conta-corrente cujo número corresponde ao que foi passado como parâmetro para esse método. Se a conta-corrente tiver sido localizada na lista encadeada, esse método deve retornar a conta-corrente localizada. Caso contrário, esse método deve retornar null.
 public ContaCorrente localizar(int numContaCorrente)
 {
 CelulaContaCorrente aux;
 // o ponteiro aux será utilizado para percorrermos a lista encadeada a procura do item desejado. 
 aux = primeiro.proximo;
 // enquanto o ponteiro aux não tiver percorrido toda a lista encadeada...
 while (aux != null)
 {
 // se o ponteiro aux estiver apontando para o item desejado...
 if (aux.item.getNumContaCorrente() == numContaCorrente)
 {
 // retorna o item desejado.
 return aux.item;
 }
 else
 {
 // se ainda não encontramos o item desejado, avançamos na lista encadeada.
 aux = aux.proximo;
 }
 }
 return null;
 }
 // verifica se a lista encadeada está vazia. Em caso afirmativo, retorna true e em caso negativo retorna false.
 public Boolean listaVazia()
 {
 // a lista está vazia se ela só apresenta o nodo-cabeça.
 if (primeiro == ultimo)
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 // imprime, para todas as contas-correntes armazenadas na lista encadeada, o nome de seu titular, o número de sua agência, seu número e saldo. A ordem de impressão deve ser do primeiro nodo da lista para o último.
 public void imprimir()
 {
 CelulaContaCorrente aux;
 // o ponteiro aux será utilizado para percorrermos a lista encadeada.
 aux = primeiro.proximo;
 if (aux == null)
 {
 Console.WriteLine("A lista de contas-correntes está vazia.");
 }
 else
 {
 // enquanto o ponteiro aux não tiver percorrido toda a lista encadeada...
 while (aux != null)
 {
 // imprime os dados da conta-corrente apontada pelo ponteiro aux.
 Console.WriteLine("\n Titular: " + aux.item.getTitular() + ", Agência: " + aux.item.getAgencia() + ", Número da conta-corrente: " + aux.item.getNumContaCorrente() + ", Saldo atual: " + aux.item.getSaldo());
 // avançamos na lista encadeada.
 aux = aux.proximo;
 }
 }
 }
 }
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando