alocação dinâmica de memória

6 respostas
C

E aí pessoal,
estou estudando listas, pilhas , etc…

fiz uma classe Stack… em um dos exercicios que estou fazendo pede o número de elementos da pilha através, implementando a alocação dinâmica de memória.

Eu usei o seguinte padrão:

public class Stack {
    List l;
    private int n;

   // construct stack
   public Stack() { 
      l = new List( "stack" ); 
   }

   // add object to stack
   public  void push( Object object ) { 
      l.insertAtFront( object ); 
   }

   // remove object from stack
   public  Object pop() throws EmptyListException { 
      return l.removeFromFront(); 
   }
   
   // determine whether list is empty
   public  void print() {
       l.print();
   }
   
   //tamanho da pilha
   public int size(){
	return n;
	   
   }
   
   // output List contents
   public boolean isEmpty() { 
      return l.isEmpty();
    }

} // end class Stack

creio que meu método size não esteja fazendo alocação de memória
Nao entendi mto como funciona esse processo, alguém dá uma luz?

Algum material bom na net já serve.

Desde já, valeuu gente.

6 Respostas

fernandosavio

Desculpe a ignorância .com, mas vamos lá:
[list]Sua classe compila? Pois você está tentando instanciar a interface List![/list]
[list]Eu não achei a classe EmptyListException na documentação Java.[/list]
[list]Também não achei os métodos removeFromFront(), insertAtFront() e print() da interface List nos Docs.[/list]

Então, você pode utilizar algo que já existe que é java.util.Stack. Procure na documentação que isto já está pronto!
Não sei exatamente o que você não entendeu mas um ótimo material para aprender o básico, e mais um pouco, em Java é a apostila FJ-11 da Caelum.

Espero ter ajudado de alguma forma!

fernandosavio

wellington.nogueira:

Tenho quase certeza que List é uma classe que ele já implementou :wink:
E acho que é um exercício de algorítmos, logo, a classe pronta nõa deve ajudá-lo hehe.

Wellington, List é uma interface e não pode ser instanciada. Aqui está a prova!

E você tem toda a razão, COM CERTEZA não deixariam ele usar uma API pronta…
Mas não é impossível fazer na mão, eu já fiz um trabalho de Métodos de Pesquisa e Ordenação em Java na mão.
Primeiro ele precisa definir a estrutura que ele quer fazer, depois criar uma classe que represente essa estrutura. Ex.:

public class Estrutura{
	int conteudo;
	Estrutura ant;		//Referencia a outro objeto Estrutura
	Estrutura prox;	    //se comportando semelhante aos ponteiros do C	
}

Depois é só criar a classe que vai manipular os dados, e cada célula de uma lista encadeada é uma instância de Estrutura…
Acho que agora ficou melhor de entender não é?

fernandosavio

Bom…
Esse argumento me ganhou!
auhehuaeeahue…
Mas se tratando de Collections, List é uma interface! Isso sim eu posso garantir!
hehehehe

WellingtonRamos

fernandosavio:
Desculpe a ignorância .com, mas vamos lá:
[list]Sua classe compila? Pois você está tentando instanciar a interface List![/list]
[list]Eu não achei a classe EmptyListException na documentação Java.[/list]
[list]Também não achei os métodos removeFromFront(), insertAtFront() e print() da interface List nos Docs.[/list]

Então, você pode utilizar algo que já existe que é java.util.Stack. Procure na documentação que isto já está pronto!
Não sei exatamente o que você não entendeu mas um ótimo material para aprender o básico, e mais um pouco, em Java é a apostila FJ-11 da Caelum.

Espero ter ajudado de alguma forma!


Tenho quase certeza que List é uma classe que ele já implementou :wink:
E acho que é um exercício de algorítmos, logo, a classe pronta nõa deve ajudá-lo hehe.

WellingtonRamos

[quote=.com]E aí pessoal,
estou estudando listas, pilhas , etc…

fiz uma classe Stack… em um dos exercicios que estou fazendo pede o número de elementos da pilha através, implementando a alocação dinâmica de memória.

creio que meu método size não esteja fazendo alocação de memória
Nao entendi mto como funciona esse processo, alguém dá uma luz?

Algum material bom na net já serve.

[/quote]
Não seria só retornar o tamanho da tua lista?
Se da tua lista não tem como obter o size, você deve incrementar n a cada adição e decrementar a cada remoção.
Quando o exercício diz que é por alocação dinâmica, significa que tua pilha não deve ter um tamanho máximo definido (comum ao usar array).

WellingtonRamos

fernandosavio:
wellington.nogueira:

Tenho quase certeza que List é uma classe que ele já implementou :wink:
E acho que é um exercício de algorítmos, logo, a classe pronta nõa deve ajudá-lo hehe.

Wellington, List é uma interface e não pode ser instanciada. Aqui está a prova!


Tem certeza? hehehe…
E se ele fez, por exemplo: package br.com.estruturadedados; public class List extends ArrayList { //coloque aqui os métodos personalizados }
Sem ver os imports, não pode-se afirmar nem uma coisa, nem outra :wink:

Criado 30 de agosto de 2011
Ultima resposta 31 de ago. de 2011
Respostas 6
Participantes 3