Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lista
São listas que contém o endereço de apenas um registro. Os “ponteiros” apontam para o próximo registro.
Implementação:
package lsimplesmente;
import java.io.*;
class LSimples {
BufferedReader entrada;
1
Prof. Nelson Batista Leitão Neto
int i = 0;
int valor;
try {
escolhas();
switch (opcao) {
case '1' :
System.out.println("Digite um valor");
valor = Integer.parseInt(entrada.readLine());
Slist.insereNo_inicio(new IntNoSimples(valor));
break;
case '2' :
System.out.println("Digite um valor");
valor = Integer.parseInt(entrada.readLine());
Slist.insereNo_fim(new IntNoSimples(valor));
break;
case '3' :
System.out.println("Digite um valor");
valor = Integer.parseInt(entrada.readLine());
System.out.println("Digite a posicao");
Slist.insereNo_posicao(new IntNoSimples(valor),posicao);
break;
case '4':
System.out.println("Localiza um valor");
2
Prof. Nelson Batista Leitão Neto
System.out.println("Digite um valor");
valor = Integer.parseInt(entrada.readLine());
Slist.buscaNo(valor);
break;
case '5':
System.out.println("Digite o valor");
valor = Integer.parseInt(entrada.readLine());
Slist.excluiNo(valor);
break;
case '6':
System.out.println("Exibe a lista");
Slist.exibeLista();
break;
System.out.println();
escolhas();
opcao = entrada.readLine().charAt(0);
}}}
Classe ListaSimples
package lsimplesmente;
class ListaSimples{
3
Prof. Nelson Batista Leitão Neto
int numero_nos;
ListaSimples(){
novoNo.prox = null;
primeiro = novoNo;
if (ultimo != null)
ultimo.prox = novoNo;
ultimo = novoNo;
if (primeiro != null)
novoNo.prox = primeiro;
else
{ if (primeiro == null)
primeiro = novoNo;
ultimo = novoNo;
int ContarNos()
{ int tamanho = 0;
{ tamanho++;
temp_no = temp_no.prox;
return tamanho;
4
Prof. Nelson Batista Leitão Neto
int pos_aux;
if(posicao == 0)
{novoNo.prox = primeiro;
if(primeiro == ultimo)
{ultimo = novoNo;}
primeiro = novoNo;}
else
{ pos_aux = 1;
{temp_no = temp_no.prox;
pos_aux ++;
novoNo.prox = temp_no.prox;
temp_no.prox = novoNo;
else
{ultimo.prox = novoNo;
ultimo = novoNo;
} } }}
int i = 0;
{ if (temp_no.valor == buscaValor)
5
Prof. Nelson Batista Leitão Neto
return temp_no;
i++;
temp_no = temp_no.prox;
return null;
{temp_no = temp_no.prox;
temp_no.prox = temp_no.prox.prox;
if (ultimo == temp_no.prox)
ultimo = temp_no;
void exibeLista()
int i = 0;
temp_no = temp_no.prox;
i++;
}}}
Classe IntNoSimples
package lsimplesmente;
class IntNoSimples{
int valor;
IntNoSimples prox;/*variável com mesmo nome da classe, onde prox faz referência ao próx
elemento da lista. Java não aceita ponteiros */
6
Prof. Nelson Batista Leitão Neto
IntNoSimples(int valorNo){
valor = valorNo;
prox = null;
Implementação:
package ldupla;
class LDuplamente{
System.out.println (temp_no.valor);
temp_no = temp_no.prox;
7
Prof. Nelson Batista Leitão Neto
temp_no = Slist.primeiro;
System.out.println (temp_no.valor);
temp_no = temp_no.prox;
Slist.excluiNo (2);
temp_no = Slist.primeiro;
System.out.println (temp_no.valor);
temp_no = temp_no.prox;
Classe ListaDupla
package ldupla;
class ListaDupla{
int numero_nos;
ListaDupla (){
numero_nos = 0;
novoNo.prox = null;
8
Prof. Nelson Batista Leitão Neto
novoNo.ant = ultimo;
if (primeiro == null)
primeiro = novoNo;
if (ultimo != null)
ultimo.prox = novoNo;
ultimo = novoNo;
numero_nos++;
temp_no = temp_no.prox;
return temp_no;
novoNo.prox = temp_no;
if (novoNo.prox != null){
novoNo.ant = temp_no.ant;
novoNo.prox.ant = novoNo;
}else{
novoNo.ant = ultimo;
ultimo = novoNo;
if (indice == 0)
primeiro = novoNo;
else
novoNo.ant.prox = novoNo;
numero_nos++;
9
Prof. Nelson Batista Leitão Neto
if (indice == 0){
primeiro = primeiro.prox;
if (primeiro != null)
primeiro.ant = null;
}else{
temp_no.ant.prox = temp_no.prox;
if (temp_no != ultimo)
temp_no.prox.ant = temp_no.ant;
else
ultimo = temp_no;
numero_nos--;
}
Classe IntNoDuplo
package ldupla;
class IntNoDuplo{
int valor;
IntNoDuplo prox;
IntNoDuplo ant;
valor = valorNo;
10
Prof. Nelson Batista Leitão Neto
Pilha
Estrutura de dados simples e bastante utilizada. O acesso é feito pelo topo. Se introduzido
novo elemento, este fica no topo. O único elemento a ser removido é o do topo. O primeiro
elemento que entrou é o último a sair. FILO = FIRST IN LAST OUT.
11
Prof. Nelson Batista Leitão Neto
Implementação
package pilhas;
import java.io.*;
class usaPilha {
public static void escolhas () {
System.out.println ("Escolha a Opcao:");
System.out.print ("\n1. Inserir");
System.out.print (" \n2. Saída");
//System.out.print (" \n3. Exibir a Pilha");
System.out.print (" \n4. Sair");
System.out.print ("\n. Opcao :\t ");
}
public static void main(String args[]){
Pilha objPilha = new Pilha(4);
BufferedReader entrada;
entrada = new BufferedReader(
new InputStreamReader (System.in) );
Object valor;
try {
escolhas();
char opcao = entrada.readLine().charAt(0);
while (opcao != '4') {
switch (opcao) {
case '1' :
if (objPilha.cheia() == false)
{System.out.println ("Digite valor: ");
valor = entrada.readLine();
12
Prof. Nelson Batista Leitão Neto
objPilha.empilhar(valor);
}
else
{System.out.println("Pilha Cheia ! ");
}
break;
case '2' :
if (objPilha.vazia() == false)
{System.out.println (objPilha.desempilhar());
}
else
{System.out.println("Pilha Vazia ! ");
}
break;
/*case '3' :
objPilha.exibePilha();
break;*/
default : System.out.println ("Opcao Invalida !");
}
System.out.println();
escolhas();
opcao = entrada.readLine().charAt(0);
}
} catch (Exception erro){
System.out.println ("Erro de Entrada de Dados. Provável Pilha Cheia");
}
}
}
Classe Pilha
package pilhas;
class Pilha {
int tamanho;
int topo;
Object vetor[];
Pilha(int tam) {
topo = -1;
tamanho = tam;
vetor = new Object[tam];
}
public boolean vazia ()
{if (topo == -1)
return true;
else
return false;
}
public boolean cheia ()
{if (topo >= tamanho)
return true;
else
return false;
}
13
Prof. Nelson Batista Leitão Neto
Fila
Estrutura de dados também simples e bastante utilizada. O acesso é feito pelo início. São
acessados na ordem que foram inseridos. O elemento novo vai pro final da fila e quando é
removido, será o primeiro elemento inserido. Primeiro que entrou e o primeiro que sai. (FIFO –
FIRST IN FIRST OUT).
14
Prof. Nelson Batista Leitão Neto
15
Prof. Nelson Batista Leitão Neto
Implementação
package filas;
import java.io.*;
class usaFila {
public static void escolhas () {
System.out.println ("Escolha a Opcao:");
System.out.print ("\n1. Inserir");
System.out.print (" \n2. Saída");
// System.out.print (" \n3. Exibir a Fila");
System.out.print (" \n4. Sair");
System.out.print ("\n. Opcao :\t ");
}
public static void main(String args[]){
Fila objFila = new Fila(4);
BufferedReader entrada;
entrada = new BufferedReader(
new InputStreamReader (System.in) );
Object valor;
try {
escolhas();
char opcao = entrada.readLine().charAt(0);
while (opcao != '4') {
switch (opcao) {
case '1' :
if (!objFila.cheia())
{System.out.println ("Digite Valor: ");
valor = entrada.readLine();
objFila.enfileirar(valor);
}
else
{System.out.println("Fila Cheia ! ");
}
break;
case '2' :
if (objFila.vazia() == false)
{System.out.println(objFila.desenfileirar());
}
else
{System.out.println("Fila Vazia ! ");
16
Prof. Nelson Batista Leitão Neto
}
break;
/* case '3' :
objFila.exibeFila();
break;*/
default : System.out.println ("Opcao Invalida !");
}
System.out.println();
escolhas();
opcao = entrada.readLine().charAt(0);
}
} catch (Exception erro){
System.out.println ("Erro de Entrada de Dados");
}
}}
Classe Fila
package filas;
class Fila {
int tamanho;
int inicio;
int fim;
int total;
Object vetor[];
Fila(int tam) {
inicio = 0;
fim = 0;
total = 0;
tamanho = tam;
vetor = new Object[tam];
}
public boolean vazia () {
if (total == 0)
return true;
else
return false;
}
public boolean cheia () {
if (total >= tamanho)
return true;
else
return false;
}
public void enfileirar(Object elem) {
if ( !cheia())
{ vetor[fim] = elem;
fim++;
total++;
if (fim >= tamanho)
fim = 0;
}
17
Prof. Nelson Batista Leitão Neto
else
{ System.out.println("Fila Cheia");
}
}
public Object desenfileirar()
{ Object excluido;
{ if (vazia() == false)
{excluido = vetor[inicio];
inicio++;
if (inicio >= tamanho)
inicio = 0;
total --;
return excluido;
} else
{ excluido = null;
return excluido;
}
}
}
/*public void exibeFila()
{for (int i = 0; i < total; i++)
{System.out.println("posicao " + i +" valor "+vetor[i]);
}
}*/}
18