public class Lista
{
private NodoLista prim = null;//primeiro nodo da lista
private NodoLista ult = null;//ultimo nodo da lista
public void inserir(int chave)//insere dados na lista
{
NodoLista aux = new NodoLista();
aux.chave = chave;isso eu não intendi eu possi criar instancia de atributos da classe...?
if(prim == null) // lista VAZIA
prim = aux; // atualiza o primeiro
else
ult.prox = aux;
ult = aux; // atualiza o ultimo
}
}
Atributos
16 Respostas
Não entendi sua pergunta…
Pelo que vi, você está só criando uma instancia da classe NodoLista e atribuindo o valor do parametro chave ao atributo chave do objeto criado… o que você acha que está errado?
Bem cara NodoLista não é a classe e sim um atributo da classe lista certo…?
veja k foi instanciado o atributo NodoLista aux = new NodoLista(); e não a classe eu posso fazer isso…?
NodoLista não é atributo não, é uma classe… atributo de Lista é prim e ult que são do tipo NodoLista, mas isso não tem nada a ver com o aux lá embaixo…
mais cara eu declarei a classe como lista!
Esse NodoLista está declarado em outro lugar como uma outra classe, em outro arquivo .java, deve estar algo parecido com isso:
public class NodoLista{
public int chave;
}
valew cara e porque estou com algumas dúvidas chatas sobre lista por isso o nome da classe é lista vo colocar completa pra vc ver…!
/* CLASSE: LISTA ENCADEADA
* inserir(x) -> insere o elemento na lista
* pesquisar(x) -> procura pela chave na lista, retorna o nodo se o elemento for encontrado e NULL caso contrário
* remover(x) -> remove um nodo das lista de acordo com a chave
* imprimir(x) -> imprime todos os nodos da lista
*/
public class Lista
{
private NodoLista prim = null;//primeiro nodo da lista
private NodoLista ult = null;//ultimo nodo da lista
public void inserir(int chave)//insere dados há lista
{
NodoLista aux = new NodoLista();
aux.chave = chave; // preenche o nodo com os dados
if(prim == null) // lista VAZIA
prim = aux; // atualiza o primeiro
else
ult.prox = aux;
ult = aux; // atualiza o ultimo
}
public NodoLista pesquisar(int chave)
{
NodoLista aux;
aux = prim;
while(aux != null)
{
if(aux.chave == chave) // registro encontrado
return aux; // retorna o nodo encontrado
aux = aux.prox; // avança para o próximo nodo
}
return null; // retorna null qdo não encontrado
}
public void remover(int chave)
{
NodoLista aux, ant;
aux = prim;
ant = null;
while(aux != null)
{
if(aux.chave == chave) // nodo encontrado
{
if(aux == prim) // se o nodo a ser removido for o primeiro...
prim = prim.prox;
else
ant.prox = aux.prox;
if(aux == ult) // se o nodo a ser removido for o ultimo...
ult = ant;
break;
}
ant = aux;
aux = aux.prox; // avança para o próximo nodo
}
}
public void imprimir()
{
NodoLista aux;
aux = prim;
while(aux != null)
{
System.out.println("Chave: " + aux.chave);
aux = aux.prox; // avança para o próximo nodo
}
}
}
class NodoLista
{
public int chave; // campo CHAVE da lista (pode ser de outro tipo)
/* INSIRA AQUI os demais campos da lista */
public NodoLista prox = null; // referencia para o proximo nodo da lista
}
quer dizer que eu posso declarar classes dentro de classes
usando apenas um nome qualquer e um atributo é isso
por exemplo eu poderia fazer a classe
duvida aux = null;
classe duvida aux com atributo e refere a nenhum objeto já que está recebendo null é isso…?
Como você pode ver existe uma classe NodoLista declarada dentro da classe Lista, isso chamasse "Classe Interna (Inner Class)", e é uma classe como outra qualquer, só que depende de uma instancia da classe externa para existir, mas isso não vem ao caso, nesse caso se você declarasse ela separadamente daria na mesma...
e sobre sua declaração "duvida aux = null" é valido, desde que a classe "duvida" exista...
class duvida{
}
duvida aux = null;
public void inserir(int chave)//insere dados há lista
{
NodoLista aux = new NodoLista();
aux.chave = chave; // preenche o nodo com os dados
if(prim == null) // lista VAZIA
prim = aux; // atualiza o primeiro
else
ult.prox = aux;
ult = aux; // atualiza o ultimo
}
eu tb naum entedi essa passagem
NodoLista aux = new NodoLista();
aux.chave = chave; // preenche o nodo com os dados
aux e uma estancia da classe NodoLista certo? aux.chave chama chave em que e os números a qual o úsuario quer colocar na lista do tipo int certo mais porque aux.chave=chave isso é sem sentido…
o primeiro chave é um atributo do objeto aux que é da classe NodoLista:
class NodoLista
{
public int chave; //<--Esse aqui
O segundo chave é o parametro que foi recebido pelo metodo inserir:
public void inserir(int chave)//<-- Esse aqui
{
Então, você está atribuindo o valor que veio como parametro ao atributo do objeto aux… coincidentemente eles tem o mesmo nome…
O que não teria sentido é isso:
chave = chave
FINALMENTE EU ENTEDI…! poxa obrigado…!
porque na classe
class NodoLista//porque soh tem o class???? e não public class??
{
public int chave; // campo CHAVE da lista (pode ser de outro tipo)
/* INSIRA AQUI os demais campos da lista */
public NodoLista prox = null; // referencia para o proximo nodo da lista
}
não tem o public soh tem o class???
class NodoLista
Porque ela não é publica, existem 4 modificadores, private, public, protected, e o padrão…
private: só pode ser acessado dentro da propria classe
public: pode ser acessado de qualquer lugar
padrão (sem modificador): pode ser acessado dentro do mesmo pacote
protected: pode ser acessado dentro do mesmo pacote e por subclasses de qualquer pacote
Ou seja, essa classe NodoLista pode ser acessada por qualquer classe dentro do mesmo pacote, mas não pode ser acessada de fora desse pacote…
quer dizer ela soh pode ser acessa da classe lista a qual é o pacote?
Ela só pode ser acessada de uma classe que esteja no mesmo pacote que a classe Lista
Cara estou quebrando a cabeça para enteder a seguinte passagem…
public class AED16l
{
private NodoLista pri =null;//primeiro nodo da lista
private NodoLista ult=null;//ultimo nodo da lista
public void inserir(int chave)//insere dados a lista
{
NodoLista aux = new NodoLista();
aux.chave=chave;
if(pri==null)//lista vazia
pri=aux;//atualiza o primeiro
else
ult.prox=aux;
ult=aux;//atualiza o ultimo
}
}
class NodoLista
{
public int chave;
public NodoLista prox=null;//referencia ao próximo nodo da lista
}
bem se pri for igual a null o pri vai ser atualizado porque eu tenho que ter pri como referencia como o primeiro modo da minha lista certo, caso contrario ult.prox=aux,mas o valor de aux vai ser null já que é um objeto da classe NodoLista ou o valor dele foi modificado a partir que aux.chave=chave;??? como aux é uma instacia da classe ela naum pode receber valores so chamar os metodos certo?? intaum quando qualquer variavel receber aux vai receber null certo?? como nesta passagem
Mas aux não é null:
NodoLista aux = new NodoLista();
Isso seria null:
NodoLista aux = null;
bem estou com o seguinte problema
Code:
public class Lista
{
private NodoLista pim =null;
private NodoLista ult=null;
}
classe NodoLista
{
public int chave;
public NodoLista prox = null;
}
Eu estou muito confuso alguém com bastante paciencia poderia me ajudar nessas classes??
primeiramente sobre a classe Lista essa NodoLista o que significa esse
private NodoLista pim =null; ??? e uma variavel do tipo NodoLista??
pode chamar variaveis do tipo da classe apenas colocando o nome da classe tipo o que ocorreu na classe lista…?
mais porque null…??