Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ______________________________________________________________________________________________________________________________________
- Classe Nó:
- package listacircular;
- public class No<T extends Comparable<T>> {
- private T valor;
- private No proximo;
- private No anterior;
- public No(T valor) {
- this.valor = valor;
- proximo = null;
- }
- /**obtém o próximo nó */
- public No<T> obterProximo() {
- return this.proximo;
- }
- public No<T> obterAnterior() {
- return this.anterior;
- }
- /**inserir o próximo nó */
- public void inserirProximo(No proximo) {
- this.proximo = proximo;
- }
- public void inserirAnterior(No anterior) {
- this.anterior = anterior;
- }
- /**inserir o valor no nó */
- public void inserirValor(T valor) {
- this.valor= valor;
- }
- /**obter o valor do nó */
- public T obterValor() {
- return this.valor;
- }
- //métod toString para exibir o nó
- public String toString() {
- return this.valor.toString();
- }
- }
- __________________________________________________________________________________________________________________
- Classe ListaCircular:
- package listacircular;
- public class ListaCircular< T extends Comparable<T>> {
- No<T> primeiro;
- No<T> ultimo;
- No<T> no_atual = primeiro;
- public void inserir(T valor) {
- No<T> novo_no = new No<T>(valor);
- No<T> auxiliar = primeiro;
- No<T> auxiliar2;
- if(this.primeiro == null) {
- this.primeiro = novo_no;
- this.ultimo = novo_no;
- primeiro.inserirAnterior(ultimo);
- primeiro.inserirProximo(ultimo);
- ultimo.inserirAnterior(primeiro);
- ultimo.inserirProximo(primeiro);
- /*System.out.println("Primeiro: "+this.primeiro.obterValor()+"\nUltimo: "+this.ultimo.obterValor()+
- "\nProximo do primeiro: "+this.primeiro.obterProximo()+"\nAnterior do primeiro:"+this.primeiro.obterAnterior());
- System.out.println("\nProximo do ultimo: "+this.ultimo.obterProximo()+
- "\nAnterior do ultimo :"+this.ultimo.obterAnterior()+"\n_____________________");*/
- }else {
- System.out.println("-----------------------------------------");
- while((auxiliar != this.ultimo) &&
- ( auxiliar.obterValor().compareTo( novo_no.obterValor() ) == -1 ) )
- {
- System.out.println("Auxiliar atual: -"+auxiliar);
- auxiliar = auxiliar.obterProximo();
- System.out.println("Mudou para: -"+auxiliar);
- }
- if(auxiliar == this.primeiro) {
- if(this.primeiro == this.ultimo){
- if(this.primeiro.obterValor().compareTo(novo_no.obterValor()) == -1 ) {
- this.ultimo=novo_no;
- this.primeiro.inserirProximo(this.ultimo);
- this.primeiro.inserirAnterior(this.ultimo);
- this.ultimo.inserirAnterior(this.primeiro);
- this.ultimo.inserirProximo(this.primeiro);
- System.out.println("Primeiro: "+this.primeiro.obterValor()+"\nUltimo: "+this.ultimo.obterValor()+
- "\nProximo do primeiro: "+this.primeiro.obterProximo()+"\nAnterior do primeiro:"+this.primeiro.obterAnterior());
- System.out.println("\nProximo do ultimo: "+this.ultimo.obterProximo()+
- "\nAnterior do ultimo :"+this.ultimo.obterAnterior()+"\n_____________________");
- }else {
- this.ultimo=this.primeiro;
- this.primeiro=novo_no;
- this.primeiro.inserirProximo(this.ultimo);
- this.primeiro.inserirAnterior(this.ultimo);
- this.ultimo.inserirAnterior(this.primeiro);
- this.ultimo.inserirProximo(this.primeiro);
- System.out.println("Primeiro: "+this.primeiro.obterValor()+"\nUltimo: "+this.ultimo.obterValor()+
- "\nProximo do primeiro: "+this.primeiro.obterProximo()+"\nAnterior do primeiro:"+this.primeiro.obterAnterior());
- System.out.println("\nProximo do ultimo: "+this.ultimo.obterProximo()+
- "\nAnterior do ultimo :"+this.ultimo.obterAnterior()+"\n_____________________");
- }
- } else {
- System.out.println("entra nesse if (menor de todos)");
- this.primeiro=novo_no;
- auxiliar.inserirAnterior(this.primeiro);
- this.primeiro.inserirProximo(auxiliar);
- this.primeiro.inserirAnterior(this.ultimo);
- this.ultimo.inserirProximo(this.primeiro);
- }
- } else if(auxiliar.obterValor()==this.ultimo.obterValor()){
- System.out.println("entra nesse if (ultimo)");
- this.ultimo=novo_no;
- auxiliar.inserirProximo(this.ultimo);
- this.ultimo.inserirAnterior(auxiliar);
- this.ultimo.inserirProximo(primeiro);
- this.primeiro.inserirAnterior(this.ultimo);
- }
- else if(auxiliar.obterAnterior()==this.primeiro && auxiliar.obterValor().compareTo( novo_no.obterValor() ) == +1){
- System.out.println("entra if primeiro");
- auxiliar.inserirAnterior(novo_no);
- novo_no.inserirProximo(auxiliar);
- novo_no.inserirAnterior(this.primeiro);
- this.primeiro.inserirProximo(novo_no);
- } else {
- System.out.println("desce pro if meio");
- auxiliar2 = auxiliar.obterAnterior();
- novo_no.inserirProximo(auxiliar);
- auxiliar2.inserirProximo(primeiro);
- }
- }
- }
- public No<T> remover(T valor) {//arrumada
- No<T> auxiliar = primeiro;
- No<T> retorno =null;
- while((auxiliar != null) && (auxiliar.obterValor().compareTo( valor ) != 0) )
- {
- auxiliar = auxiliar.obterProximo();
- }
- if(auxiliar == this.primeiro) {
- retorno = this.primeiro;
- retorno.inserirProximo(null);
- this.primeiro = this.primeiro.obterProximo();
- this.primeiro.inserirAnterior(null);
- }else if(auxiliar != null)
- auxiliar.obterAnterior().inserirProximo(auxiliar.obterProximo());
- auxiliar.obterProximo().inserirAnterior(auxiliar.obterAnterior());
- auxiliar.inserirProximo(null);
- auxiliar.inserirAnterior(null);
- return retorno;
- }
- public No<T> buscar(T valor) {
- if(no_atual== null)
- no_atual = primeiro;
- while((no_atual != null) && (no_atual.obterValor().compareTo( valor )) != 0 )
- {
- if (no_atual.obterValor().compareTo(valor)==-1){
- no_atual = no_atual.obterProximo();
- }
- else
- no_atual=no_atual.obterAnterior();
- }
- return no_atual;
- }
- public String buscarCount(T valor) {
- int count = 0;
- if(no_atual== null)
- no_atual = primeiro;
- while((no_atual != null) && (no_atual.obterValor().compareTo( valor )) != 0 )
- {
- count++;
- if (no_atual.obterValor().compareTo(valor)==-1){
- no_atual = no_atual.obterProximo();
- }
- else
- no_atual=no_atual.obterAnterior();
- }
- return "Achou "+no_atual.obterValor()+" com "+count + " passos";
- }
- public String toString() {
- String s = "";
- No<T> auxiliar = primeiro;
- do{
- s+=auxiliar.obterValor().toString();
- auxiliar=auxiliar.obterProximo();
- if(auxiliar!=this.primeiro){
- s+=" - ";
- }
- } while(auxiliar != this.primeiro);
- s+=".";
- return s;
- }
- }
- ______________________________________________________________________________________________________________________________________
- Classe Main:
- package listacircular;
- public class Main {
- public static void main(String[] args) {
- ListaCircular lista = new ListaCircular<String>();
- lista.inserir(15);
- //System.out.println(lista.toString());
- lista.inserir(30);
- lista.inserir(2);
- lista.inserir(13);
- System.out.println(lista.toString());
- lista.inserir(10);
- lista.inserir(14);
- System.out.println(lista.toString());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement