Duplicar Pilha

8 respostas
C

Preciso duplicar o conteúdo de uma pilha como faço isso

public class Pilha<T> { private LinkedList<T> objetos = new LinkedList<T>(); public void insere(T t) { this.objetos.add(t); }

8 Respostas

A

carlosuniverso:
Preciso duplicar o conteúdo de uma pilha como faço isso

public class Pilha<T> { private LinkedList<T> objetos = new LinkedList<T>(); public void insere(T t) { this.objetos.add(t); }

Olá Carlos.

Bom se eu entendi a sua dúvida, é muito simples.

Depois que já tem a sua lista, é só fazer assim:

LinkedList<T> objetos2 = objetos;

Assim você tem duas listas iguais.

di.magdaleno

Artur Martini:
carlosuniverso:
Preciso duplicar o conteúdo de uma pilha como faço isso

public class Pilha<T> { private LinkedList<T> objetos = new LinkedList<T>(); public void insere(T t) { this.objetos.add(t); }

Olá Carlos.

Bom se eu entendi a sua dúvida, é muito simples.

Depois que já tem a sua lista, é só fazer assim:

LinkedList<T> objetos2 = objetos;

Assim você tem duas listas iguais.


Na verdade assim você tem duas referências pro mesmo objeto.

Quando você diz “duplicar o conteúdo de uma pilha” você quer dizer criar outra pilha com o mesmo conteúdo ou a mesma pilha com o conteúdo duplicado?

A

di.magdaleno:
Artur Martini:
carlosuniverso:
Preciso duplicar o conteúdo de uma pilha como faço isso

public class Pilha<T> { private LinkedList<T> objetos = new LinkedList<T>(); public void insere(T t) { this.objetos.add(t); }

Olá Carlos.

Bom se eu entendi a sua dúvida, é muito simples.

Depois que já tem a sua lista, é só fazer assim:

LinkedList<T> objetos2 = objetos;

Assim você tem duas listas iguais.


Na verdade assim você tem duas referências pro mesmo objeto.

Quando você diz “duplicar o conteúdo de uma pilha” você quer dizer criar outra pilha com o mesmo conteúdo ou a mesma pilha com o conteúdo duplicado?

É verdade, me esqueci deste detalhe.

Também fiquei com a mesma dúvida rsrsrs

A
LinkedList<String> lista1 = new LinkedList<String>();
		LinkedList<String> lista2 = new LinkedList<String>();

		String a = "Primeira";
		lista1.add(a);

		String b = "Segunda";
		lista1.add(b);

		lista2.addAll(lista1); // Copiando os dados da lista1 para lista2

		System.out.println("Lista um: " + lista1); // Aqui temos duas listas
													// diferentes com o mesmo
													// conteúdo
		System.out.println("Lista dois: " + lista2); // Aqui temos duas listas
														// diferentes com o
														// mesmo conteúdo

		lista1.remove(1); // removento o prmeiro item da lista1 para mostrar que
							// são diferentes

		System.out.println("Lista um: " + lista1.toString()); // Mostrando que
																// as listas são
																// diferentes
		System.out.println("Lista dois: " + lista2.toString()); // Mostrando que
																// as listas são
																// diferentes

		lista1.removeAll(lista2); // limpando a lista1

		lista1.addAll(lista2); // adicionando a lista2 na lista1
		lista2.addAll(lista1); // duplicando a lista1

		System.out.println(lista2); // Uma lista com seus elementos duplicados

Análise o código e tente entender.

Como ficamos na dúvida se você queria duas pilhas com o mesmo conteúdo ou o uma pilha com o conteúdo duplicado, este exemplo abrange os dois casos.

Espero ter ajudado.

Artur Martini

C
Seguinte está pilha tem que ter comportamento dinamico. Quando eu falo eu duplicar seria mais ou menos assim:

primeira pilha: 1234

segunda pilha: 12341234

Pelo que eu entendi devo usar duas pilhas fixas: p1 e p2 e dois auxiliares: aux1 e aux2 e um contador pois não posso determinar o tamanho de elementos para pilha

topo = aux1;

aux2 = aux1;

cont++;

 que eu não sei como
C

Artur Martini,

Testei o código e é isso aí. No caso eu só preciso preencher a lista1 e devolver na lista 2 os elementos da lista 1 + o da 2. Perfeito. Você fez com String para números como fica? No caso cabe um “cont” pois não quero determinar a quantidade exata de valores que ficaram armazenados na pilha?

Obrigado, e valeu pela ajuda.

A

carlosuniverso:
Artur Martini,

Testei o código e é isso aí. No caso eu só preciso preencher a lista1 e devolver na lista 2 os elementos da lista 1 + o da 2. Perfeito. Você fez com String para números como fica? No caso cabe um “cont” pois não quero determinar a quantidade exata de valores que ficaram armazenados na pilha?

Obrigado, e valeu pela ajuda.

Olá, para números fica da mesma maneira é só trocar o tipo dentro do Generics <>.

Quando trabalhamos com listas temos a vantagem de ter um tamanho dinâmico, ou seja, você pode adicionar de acordo com sua necessidade, diferente de Array que é preciso especificar o tamanho.

C
Artur Martini e amigos tem como o
LinkedList<String> lista1 = new LinkedList<String>();   
        LinkedList<String> lista2 = new LinkedList<String>();   
  
        String a = "Primeira";   
        lista1.add(a);   
  
        String b = "Segunda";   
        lista1.add(b);   
  
        lista2.addAll(lista1); // Copiando os dados da lista1 para lista2   
  
        System.out.println("Lista um: " + lista1); // Aqui temos duas listas   
                                                    // diferentes com o mesmo   
                                                    // conteúdo   
        System.out.println("Lista dois: " + lista2); // Aqui temos duas listas   
                                                        // diferentes com o   
                                                        // mesmo conteúdo   
  
        lista1.remove(1); // removento o prmeiro item da lista1 para mostrar que   
                            // são diferentes   
  
        System.out.println("Lista um: " + lista1.toString()); // Mostrando que   
                                                                // as listas são   
                                                                // diferentes   
        System.out.println("Lista dois: " + lista2.toString()); // Mostrando que   
                                                                // as listas são   
                                                                // diferentes   
  
        lista1.removeAll(lista2); // limpando a lista1   
  
        lista1.addAll(lista2); // adicionando a lista2 na lista1   
        lista2.addAll(lista1); // duplicando a lista1   
  
        System.out.println(lista2); // Uma lista com seus elementos duplicados

ser feito sem arraylist ou qualquer forma de array?
Obrigado

Criado 30 de setembro de 2013
Ultima resposta 2 de out. de 2013
Respostas 8
Participantes 3