Você está na página 1de 6

Prtica ED 11A Lista Ligada

1. Objetivo

Editar um programa em Java utilizando o IDE Eclipse


Trabalhar com lista ligada

2. Recursos Necessrios

Computador com compilador Java instalado


IDE Eclipse

3. Procedimentos
1. Implementar a classe ListaLigada, que:

Armazene objetos

Implementar um programa principal que armazene e objetos de Cadastro na Lista e utilize as opes de
cadastrar, editar, excluir, pesquisar e listar, conforme operao escolhida pelo usurio.
Cadastro: registro que contenha nome, email, endereo, telefone, idade.
package cadastro;
// registro:
public class Cadastro {
public String email;
public String nome;
public String endereco;
public String telefone;
public int idade;
public Cadastro(String email, String nome, String endereco,
String telefone, int idade) {
super();
this.email = email;
this.nome = nome;
this.endereco = endereco;
this.telefone = telefone;
this.idade = idade;
}
// toString:
public String toString() {
return "E-mail: "+email+"\n"+
"Nome: "+nome+"\n"+
"Endereo: "+endereco+"\n"+
"Telefone: "+telefone+"\n"+
"Idade: "+idade;

}
}

package lista;
import javax.swing.JOptionPane;
import cadastro.Cadastro;
public class ListaLigada {
private No primeiro, ultimo;
public ListaLigada () {
1

primeiro = null;
ultimo = null;
}
public boolean listaVazia () {
if (primeiro == null && ultimo == null)
{
return true;
}
else {
return false;
}
}
public void inserirInicio (No novoNo) {
if (listaVazia())
{
ultimo = novoNo;
}
else {
novoNo.prox = primeiro;
}
primeiro = novoNo;
}
public void inserirFinal (No novoNo) {
if (listaVazia()) {
primeiro = novoNo;
}
else
{
ultimo.prox = novoNo;
}
ultimo = novoNo;
}
public int contarNos ( ) {
int tamanho = 0;
No noTemp = primeiro;
while (noTemp != null) {
tamanho = tamanho + 1;
noTemp = noTemp.prox;
}
return tamanho;
}
public void inserirMeio(No novoNo, int posicao) {
No noTemp = primeiro;
int nroNos, posAux=1;
nroNos = contarNos();
if (posicao <= 1)
{
inserirInicio(novoNo);
}
else {
if (posicao > nroNos)
{
inserirFinal(novoNo);
}
else {
while (posAux < (posicao - 1)) {
noTemp = noTemp.prox;
posAux = posAux + 1;
}
novoNo.prox = noTemp.prox;
noTemp.prox = novoNo;
}
}
}
public void remover(Object elemento) {
2

if (!listaVazia()) {
No noTemp = primeiro;
No noAnt = null;
if (primeiro.elemento == elemento) {
primeiro = primeiro.prox;
}
else {
while (noTemp != null && noTemp.elemento != elemento)
noAnt = noTemp;
noTemp = noTemp.prox;
}
if (noTemp!=null) {
noAnt.prox = noTemp.prox;
}
if (noTemp == ultimo) {
ultimo = noAnt;
}
}
}

}
public void elementoInicio( ) {
if (! listaVazia()) {
JOptionPane.showMessageDialog(null,"O primeiro elemento "+
primeiro.elemento);
} else {
JOptionPane.showMessageDialog(null,"Lista Ligada Vazia");
}
}
public void elementoFinal( ) {
if (! listaVazia())
{
JOptionPane.showMessageDialog(null,"O ltimo elemento "+
ultimo.elemento);
}
else {
JOptionPane.showMessageDialog(null,"Lista Ligada Vazia");
}
}
public void atualizar (Cadastro cad) {
int i = 1;
Cadastro cad1;
No noTemp = primeiro;
while (noTemp != null) {
cad1 = (Cadastro) noTemp.elemento;
if (cad1.email.equals(cad.email)) {
noTemp.elemento = cad;
break;
}
i = i + 1;
noTemp = noTemp.prox;
}
}
public Cadastro pesquisaNo (String email) {
int i = 1;
Cadastro cad;
No noTemp = primeiro;
while (noTemp != null) {
cad = (Cadastro) noTemp.elemento;
if (cad.email.equals(email)) {
3

//
"posicao " +i);

JOptionPane.showMessageDialog(null,"No "+ noTemp.elemento +


return cad;
}
i = i + 1;
noTemp = noTemp.prox;

}
return null;
}
public No buscaNo (Object elemento) {
int i = 1;
No noTemp = primeiro;
while (noTemp != null) {
if (noTemp.elemento == elemento) {
JOptionPane.showMessageDialog(null,"No "+ noTemp.elemento +
"posicao " +i);
return noTemp;
}
i = i + 1;
noTemp = noTemp.prox;
}
return null;
}
public void mostrarLista( ) {
int i = 1;
No noTemp = primeiro;
String mostra = "";
while (noTemp != null) {
mostra+=noTemp.elemento+ "\n****************\n";
noTemp = noTemp.prox;
i++;
}
JOptionPane.showMessageDialog(null,mostra);
}
}
// classe No:
package lista;
public class No {
Object elemento;
No prox;
public No (Object elem){
elemento = elem;
prox = null;
}
}
// Classe Principal:
import javax.swing.JOptionPane;
import cadastro.Cadastro;
import lista.*;
public class MainComLista {
public static void main(String[] args) {
ListaLigada lista = new ListaLigada();
int opcao;
do {
opcao = menu();
switch (opcao) {
4

case 1:
cadastrar(lista);
break;
case 2:
editar(lista);
break;
case 3:
excluir(lista);
break;
case 4:
pesquisar(lista);
break;
case 5:
listar(lista);
break;
case 6: // fim;
break;
default:
JOptionPane.showMessageDialog(null, "Opo invlida!");
}
} while (opcao != 6);
}
static int menu() {
int op = Integer.parseInt(JOptionPane
.showInputDialog("Digite a opo: \n" + "1. Cadastrar\n"
+ "2. Editar\n" + "3. Excluir\n" + "4. Pesquisar\n"
+ "5. Listar \n6. Sair"));
return op;
}
static void cadastrar(ListaLigada lista) {
Cadastro cadastro = new Cadastro("", "", "", "", 0);
cadastro.email = JOptionPane.showInputDialog("Digite o e-mail");
cadastro.nome = JOptionPane.showInputDialog("Digite o nome");
cadastro.endereco = JOptionPane.showInputDialog("Digite o
endereo");
cadastro.telefone = JOptionPane.showInputDialog("Digite o
telefone");
cadastro.idade = Integer.parseInt(JOptionPane
.showInputDialog("Digite a idade"));
No novoNo = new No(cadastro);
lista.inserirFinal(novoNo);
}
static void editar(ListaLigada lista) {
String novoNome, novoEnd, novoTel, novaIdade;
String email = JOptionPane.showInputDialog("Digite o email");
Cadastro cad=lista.pesquisaNo(email);
if (cad == null) {
JOptionPane.showMessageDialog(null, "E-mail no encontrado!");
} else {
novoNome = JOptionPane.showInputDialog(cad.nome
+ "\nDigite o novo nome:");
if (!novoNome.equals("")) {
cad.nome = novoNome;
5

}
novoEnd = JOptionPane.showInputDialog(cad.endereco
+ "\nDigite o novo endereo:");
if (!novoEnd.equals("")) {
cad.endereco = novoEnd;
}
novoTel = JOptionPane.showInputDialog(cad.telefone
+ "\nDigite o novo telefone:");
if (!novoTel.equals("")) {
cad.telefone = novoTel;
}
novaIdade = JOptionPane.showInputDialog(cad.idade
+ "\nDigite a nova idade:");
if (!novaIdade.equals("")) {
cad.idade = Integer.parseInt(novaIdade);
}
lista.atualizar(cad);
JOptionPane.showMessageDialog(null, "Registro atualizado com
sucesso!");
}
}
static void excluir(ListaLigada lista) {
String email = JOptionPane
.showInputDialog("Digite o email a ser excludo");
Cadastro cad=lista.pesquisaNo(email);
if (cad == null) {
JOptionPane.showMessageDialog(null, "E-mail no encontrado!");
} else {
lista.remover(cad);
JOptionPane.showMessageDialog(null, "Registro removido com
sucesso!");
}
}
static void pesquisar(ListaLigada lista) {
String email = JOptionPane
.showInputDialog("Digite o email a ser pesquisado");
Cadastro cad=lista.pesquisaNo(email);
if (cad == null) {
JOptionPane.showMessageDialog(null, "E-mail no encontrado!");
} else {
JOptionPane.showMessageDialog(null, "Dados encontrados:\n"+cad);
}
}
static void listar(ListaLigada lista) {
lista.mostrarLista();
}
}