Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, sou programador iniciante em js e ultimamente tenho tido uma dificuldade para executar uma função no código. O código no qual estou programando é uma simples agenda telefônica em lista ligada. O problema que estou tendo é que quando excluo um contato e depois peço para mostrar os contatos novamente em ordem alfabética o contato excluído retorna, qual seria uma possível solução do problema? O código que é responsável por ordenar os elementos está de vermelho, coloquei também algumas fotos para se entender melhor segue o código abaixo:

<!DOCTYPE html>
<html>
    <head>
        <title>Lista Ligada</title>
        <meta charset="UTF-8">
        <script src="Metodos_Lista_Ligada.js"></script>
    <script src="Executa_Programa_Lista_Ligada.js"></script>
    </head>
    <body>
        <h1>Título: Gerenciamento de agenda</h1>
        <button type="button" onclick="Programa()">Executar</button>
        <p id="resultado"></p>
    </body>
    <script>
    /* A função No está incompleta
    
*/ //---------------------------------------------------------segunda parte-----------------------------------------------------------------------------------

function No(n,t) {
  this.nome = n;
  this.numero = t;
  this.prox = null;
}

function ListaLigada() {
    this.cabeca = null
}
ListaLigada.prototype.estaVazia = function() {
  if (this.cabeca === null) {
    return true;
  } else {
    return false;
  }
}

ListaLigada.prototype.tamanho = function() {
  var NoAtual = this.cabeca;
  var quantidade = 0;
  while (NoAtual !== null) { 
    quantidade++;  
    NoAtual = NoAtual.prox;
  }
  return quantidade;
};
ListaLigada.prototype.insereNaCabeca = function(n,t) {
  var NovoNo = new No(n,t);
  NovoNo.prox = this.cabeca;
  this.cabeca = NovoNo;  
};


ListaLigada.prototype.insereNoFim = function(valor) {
  var NovoNo = new No(valor);
  var NoAtual = this.cabeca;
  if (this.estaVazia()) {
    this.cabeca = NovoNo;
  } else {
    while (NoAtual.prox !== null) { 
      NoAtual = NoAtual.prox;
    }
    NoAtual.prox = NovoNo;    
  }
};

ListaLigada.prototype.insere = function(posicao, valor) {
  if ((posicao <= 0) | (posicao > (this.tamanho() + 1))) {
    return -1;
  }
  if (posicao == 1) {
    this.insereNaCabeca(valor);
    return 0;
  }  
  var NovoNo = new No(valor);
  var NoAtual = this.cabeca;
  var PosicaoAtual = 1;
  while (PosicaoAtual < (posicao - 1) ) { 
      NoAtual = NoAtual.prox;
      PosicaoAtual++;
  }
  NovoNo.prox = NoAtual.prox;
  NoAtual.prox = NovoNo;
  return 0;
};

ListaLigada.prototype.remove = function(n) {
  if (this.estaVazia()) {
    return -1;
  }
  if (this.cabeca.nome == n) {
    this.cabeca = this.cabeca.prox;
    return 0;
  }
  var NoAtual = this.cabeca;
  var NoAnt = null;
  while ((NoAtual.prox !== null) & (NoAtual.nome != n)) { 
    NoAnt = NoAtual;
    NoAtual = NoAtual.prox;
  }
  if (NoAtual.nome == n) { 
    NoAnt.prox = NoAtual.prox;
    return 0;
  } else {
    return -1;
  }
};

ListaLigada.prototype.removePosicao = function(n) {
  if ((n <= 0) | (posicao > this.tamanho())) {
    return -1;
  }
  var NoAtual = this.cabeca;
  var NoExcluido = null;
  if (n == 1) {
    this.cabeca = NoAtual.prox;
    return 0;
  }  
  var PosicaoAtual = 1;
  while (PosicaoAtual < (n - 1) ) { 
      NoAtual = NoAtual.prox;
      PosicaoAtual++;
  }
  NovoExcluido = NoAtual.prox;
  NoAtual.prox = NovoExcluido.prox;
  return 0;
};

ListaLigada.prototype.posicaoNo = function(valor) {
  if (this.estaVazia()) {
    return -1;
  }
  if (this.cabeca.info == valor) {
    return 1;
  }
  var NoAtual = this.cabeca;
  var NoAnt = null;
  var posicao = 1;
  while ((NoAtual.prox !== null) & (NoAtual.info != valor)) { 
    NoAnt = NoAtual;
    NoAtual = NoAtual.prox;
    posicao++;
  }
  if (NoAtual.info == valor) { 
    return posicao;
  } else {
    return -1;
  }  
};

ListaLigada.prototype.insereOrdenado = function(n, t) {
  var ordernar = new No(n, t);
   if (this.estaVazia()) {
    this.cabeca = ordernar;
    return 1;
  }
  if ( n<this.cabeca.nome ) {
    this.insereNaCabeca (n, t);
    return 2;
  }
  var Aux1, Aux2 ; 
  Aux1 = null;
  Aux2 = this.cabeca; 
  
  while ((Aux2.prox!== null ) && (n > Aux2.nome)) {
  Aux1 = Aux2;
  Aux2=Aux2.prox;
  }
  if (( Aux2.prox===null )&& (Aux2.nome<n)){
  Aux2.prox= ordernar;
  return 3;
  }
  else { 
  ordernar.prox=Aux1.prox ; 
  Aux1.prox = ordernar;
  return 4  ;
  }
};

ListaLigada.prototype.exibeLista = function() {
  var NoAtual = this.cabeca;
  var Texto="";
  Texto="";
  while (NoAtual !== null) { 
    Texto += ""+ NoAtual.nome +  "  :  " + NoAtual.numero + "</br></br>" ;  
    NoAtual = NoAtual.prox;
  }
  Texto += "";
  return Texto;
};

ListaLigada.prototype.Ordernar2 = function() {
  
var NoAtual = this.cabeca;

var Texto="";

Texto="";


 
 while (NoAtual !== ordernar) {
 NoAtual = NoAtual.prox;
 }

Texto += "" + NoAtual.nome +  "  :  " + NoAtual.idade +  " anos  </br></br>" ;
 NoAtual = NoAtual.prox;


  
Texto += "";

return Texto;


}; 
//-----------------------------------------------------------------terceira parte --------------------------------------------------------------------------------

function LimparTela() {
    document.getElementById("resultado").innerHTML = "";
} 
function Mostrar(Texto) {
    document.getElementById("resultado").innerHTML += Texto + "</br></br>";
}
function Menu() {
    var escolha;
    escolha = prompt ("      Menu - escolha uma das opções   \n" +
                         "1 - Inserir novo contato\n" +
                         "2 - Excluir contato\n" +
                         "3 - Procurar contato\n" +
                         "4 - Exibir todos os contato\n" +
                         "5 - Exibir todos os contato em ordem alfabética\n" +
                         "6 - Mostra a quantidade\n" +
                         "7 - Procurar contatos \n" +
                         "8 - Excluir tudo");
           return escolha;
           
}

function opcao1() {
  var  n, t;
  n = prompt("Digite o nome ");
  t = prompt("Digite o  numero");
  
  LLOrdenada.insereOrdenado(n, t);
  LL.insereNaCabeca(n,t);
  Mostrar("Contato inserido com sucesso");
  Mostrar("");
  
}

function opcao2() {
  var n;
  n = prompt("Informe um elemento para ser removido da lista");
  Mostrar("--- Remover um item da lista ---");
  if (LL.remove(n) === 0) {
    Mostrar("Contato removido com sucesso");
  } else {
    Mostrar("***ERRO: Contato não removido da lista");
  } 
}
function opcao3(){
 var valor;
  valor = prompt("Informe um elemento para ser localizado a posição na da lista");
  Mostrar("--- Retorna a posição de um item na lista ---");
  Mostrar("Posição do elemento na lista: " + LL.posicaoNo(valor));  
   
}
function opcao4() {
  Mostrar("Todos os Contatos");
  Mostrar(LL.exibeLista());

  }

function opcao5(){
    Mostrar(LLOrdenada.exibeLista()); 
}
function opcao6(){
Mostrar("--- Retorna o tamanho da lista ---");
  Mostrar("Quantidade de elementos da lista: " + LL.tamanho());
}
function opcao7(){
  var valor;
  valor = prompt("Informe um elemento para ser inserido no fim da lista");
  LL.insereNoFim(valor);
  Mostrar("--- Inserir no fim da lista ---");
  Mostrar("Elemento inserido no fim da lista");  
  }

function opcao8() {    
    LL.cabeca = null;
    Mostrar("Todos os dados foram excluídos!!!")
}

function Programa() {
    var opcao;
    var valor;
    var posicao;
    LimparTela();
    Mostrar("");
    opcao = Menu();
    switch (opcao) {
        case "1":
            opcao1("");
            break;
        case "2":
            opcao2();
            break;
        case "3":
            opcao3();
            break;
        case "4":
            opcao4();
            break;
        case "5":
            opcao5();
            break;
        case "6":
            opcao6();
            break;
        case "7":
            opcao7();
            break;
        case "8":
            opcao8();
            break;
        default:
            Mostrar("Selecione uma opção");
    }
}


var LL = new ListaLigada();
var LLOrdenada = new ListaLigada();
    
    </script>
</html>

menu.jpg

1.jpg

2.jpg

3.jpg

4.jpg

  • Moderador
Postado

@Excalibug Poderia postar por favor a solução encontrada? Apenas definir o tópico como resolvido e não postar a resposta, não vai ajudar os demais que estiverem com a mesma dúvida.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!