Capitulo 12: Exemplo lista ligada
Lista_ligada: Menu do programa
package ListaOsmar;
import javax.swing.JOptionPane;
import ListaLigada.lista_ligada;
public class Lista_ligada {
public static void main(String[] args){
Lista l = new Lista();
Pessoa p;
while(true){
int opcao = Integer.parseInt(JOptionPane.showInputDialog(null,
"1. Inserir no inicio\n"+
"2. Inserir no final\n"+
"3. Listar\n"+
"4. Tamanho\n"+
"5. Eliminar ultimo\n"+
"6. Eliminar primeiro\n"+
"7. Sair\n\n"+
"Informe a opção desejada"));
switch(opcao){
case 1:
p = new Pessoa(JOptionPane.showInputDialog("Informe o nome a ser inserido no inicio: "));
l.inserirInicio(p);
break;
case 2:
p = new Pessoa(JOptionPane.showInputDialog("Informe o nome a ser inserido no final: "));
l.inserirFinal(p);
break;
case 3:
l.listar();
break;
case 4:
JOptionPane.showMessageDialog(null, "Tamanho: " + l.tamanho());
break;
case 5:
l.removerFinal();
break;
case 6:
l.removerInicio();
break;
case 7:
System.exit(0);
break;
default:
JOptionPane.showMessageDialog(null, "Opção inválida");
break;
}
}
}
}
Lista: Classe com as funções
package ListaOsmar;
import javax.swing.JOptionPane;
//Criamos a class Lista
public class Lista {
private No primeiro;
private No ultimo;
String resultado = "";
public void inserirFinal(Pessoa p){
No n = new No();
n.setPessoa(p);
n.setProximo(null);
if(this.isVazia()){
this.primeiro = n;
this.ultimo = n;
}
else{
this.ultimo.setProximo(n);
this.ultimo = n;
}
}
public void eliminarFinal(){
}
public void inserirInicio(Pessoa p){
No n = new No();
n.setPessoa(p);
if(this.isVazia()){
n.setProximo(null);
this.primeiro = n;
this.ultimo = n;
}
else{
n.setProximo(primeiro);
primeiro = n;
}
}
public boolean isVazia(){
if(this.primeiro == null){
return true;
}
else{
return false;
}
}
public void listar(){
resultado = "";
No n = this.primeiro;
while(n != null){
resultado += "Nome: " + n.getPessoa().getNome()+"\n";
n = n.getProximo();
}
JOptionPane.showMessageDialog(null, resultado);
}
public int tamanho(){
int tam = 0;
No n = this.primeiro;
while(n != null){
tam++;
n = n.getProximo();
}
return tam;
}
public No removerInicio(){
No removido = null;
if(isVazia()){
JOptionPane.showMessageDialog(null, "Lista vazia");
}
else{
removido = primeiro;
if(primeiro.equals(ultimo)){
primeiro = null;
ultimo = null;
}
else{
primeiro = primeiro.getProximo();
}
}
return removido;
}
public No removerFinal(){
No removido = null;
if (isVazia()){
JOptionPane.showMessageDialog(null, "Lista vazia");
}
else{
removido = ultimo;
if(primeiro.equals(ultimo)){
primeiro = null;
ultimo = null;
}
else{
No n = primeiro;
while (n.getProximo() != ultimo){
n = n.getProximo();
}
ultimo = n;
n = n.getProximo();
}
}
return removido;
}
}
Pessoa: Estrutura de uma pessoa
package ListaOsmar;
public class Pessoa {
//Criamos uma variável privada do tipo string
private String nome;
//Criamos o getter do nome para poder obter o nome desde outra class
public String getNome() {
return nome;
}
//Criamos o método constructor passando como parametro nome
public Pessoa(String nome) {
this.nome = nome;
}
}No: Responsável de ligar a listas
package ListaOsmar;
public class No {
//Criamos uma pessoa do tipo Pessoa
Pessoa pessoa;
//Criamos variável proximo do tipo No
No proximo;
//Criamos o getter de pessoa que vai retornar a pessoa (objeto)
public Pessoa getPessoa() {
return pessoa;
}
//Criamos o setter de pessoa pasando como parametro pessoa
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
//Criamos getter de proximo que vai retornar o proximo
public No getProximo() {
return proximo;
}
//criamos o setter proximo passando como parametro proximo
public void setProximo(No proximo) {
this.proximo = proximo;
}
}
0 comentarios:
Postar um comentário