Listas Lineares
De Aulas
Voltar para Estrutura de Dados
Classe Elemento
1public class Elemento {
2 public String nome;
3 public Elemento proximo;
4
5 public Elemento(String n) {
6 nome = n;
7 proximo = null;
8 }
9}
Classe ListaSimples
1public class ListaSimples {
2 Elemento inicio;
3
4 public ListaSimples() {
5 inicio = null;
6 }
7
8 public void inserirNoInicio(Elemento e) {
9 if (inicio == null) {
10 inicio = e;
11 } else {
12 e.proximo = inicio;
13 inicio = e;
14 }
15 }
16
17 public Elemento tirarUltimo() {
18 Elemento ponteiro = inicio;
19 if (inicio != null) {
20 Elemento anterior = null;
21 while (ponteiro.proximo != null) {
22 anterior = ponteiro;
23 ponteiro = ponteiro.proximo;
24 }
25 if (anterior == null) {
26 inicio = null;
27 } else {
28 anterior.proximo = null;
29 }
30 }
31 return ponteiro;
32 }
33
34 public String toString() {
35 String out = "Lista: ";
36 Elemento ponteiro = inicio;
37 while (ponteiro != null) {
38 out += ponteiro.nome + " -> ";
39 ponteiro = ponteiro.proximo;
40 }
41 return out;
42 }
43
44 public static void main(String[] args) {
45 ListaSimples lista = new ListaSimples();
46 Elemento e;
47
48 e = new Elemento("A");
49 lista.inserirNoInicio(e);
50 System.out.println(lista);
51
52 e = new Elemento("B");
53 lista.inserirNoInicio(e);
54 System.out.println(lista);
55
56 e = new Elemento("C");
57 lista.inserirNoInicio(e);
58 System.out.println(lista);
59
60 do {
61 e = lista.tirarUltimo();
62 if (e != null) {
63 System.out.println("Retirado: " + e.nome);
64 System.out.println(lista);
65 }
66 } while (e != null);
67 }
68}
Resultado da Execução
Lista: A ->
Lista: B -> A ->
Lista: C -> B -> A ->
Retirado: A
Lista: C -> B ->
Retirado: B
Lista: C ->
Retirado: C
Lista: