Listas encadeadas
Em uma lista encadeada, um novo espaço de memória é alocado para armazenar cada novo elemento inserido na estrutura. Desta forma, o espaço total de memória gasto pela lista é proporcional ao número de elementos nela armazenados. No entanto, não podemos garantir que os elementos da lista sejam armazenados em posições contíguas de memória, não sendo possível, portanto, o acesso direto aos elementos da lista. Para que seja possível percorrer todos os elementos da lista, devemos explicitamente guardar o encadeamento dos elementos, o que é feito armazenando-se, junto com a informação de cada elemento, um ponteiro para o próximo elemento da lista.
A figura a seguir ilustra o arranjo da memória de uma lista encadeada.

A classe ListaNos a seguir, implementa uma lista simplesmente encadeada, não ordenada, onde cada nó é uma instância de NoInt, cujo código é também fornecido.
// uma lista simplesmente encadeada onde cada nó é
// uma instância de NoInt
publicclassListaNos {
// cabeca é uma referencia para o primeiro nó da lista
privateNoIntcabeca = null;
// remove todos os nós da lista
publicvoid esvazia() {
// seu código aqui
}
// adiciona um novo nó à lista. O nó é adicionado
// no início da lista, e é referenciado por cabeca
publicvoid adiciona (NoInt no) {
// seu código aqui
}
// insere um no na posição pos, ou, em outras palavras,
// o novo nó passa a ocupar a posição pos da lista.
// O nó referenciado por cabeca é o nó 0
public void insere (NoInt no, intpos) {
// seu código aqui
}
// remove a primeira ocorrência do nó da lista cujo
// conteúdo é o mesmo do nó passado como parâmetro
public void remove (NoInt no) {
// seu código aqui
}
// retorna o número de nós na lista encadeada
publicint tamanho() {
// seu código aqui
}
}
// cada um dos nós da lista
classNoInt {
privateintnum;
publicNoIntprox;
publicNoInt (intnum) {
this.num = num;
this.prox = null;
}
publicintgetNum() {
returnnum;
}
}
Complete o código dos métodos em ListaNos para que os métodos tenham o comportamento descrito nos comentários.
I. correta implementação do método esvazia()
II. correta implementação do método adiciona()
III. correta implementação do método remove()
IV. correta implementação do método insere()
V. correta implementação do método tamanho()
VI. manutenção da estrutura da lista encadeada
Sua solução deve atender às seguintes restrições:
Você não pode adicionar novas variáveis de classe ou instância à classe ListaNos.
Você pode assumir que nenhum dos parâmetros passados aos métodos faz com que estes falhem em tempo de execução.
CONTEÚDO EXCLUSIVO
Confira nossos planos especiais de assinatura e desbloqueie agora!
Ops! Esta questão ainda não tem resolução em texto.
Ops! Esta questão ainda não tem resolução em vídeo.
Questões Relacionadas
Listas encadeadas
Em uma lista encadeada, um novo espaço de memória é alocado para armazenar cada novo elemento inserido na estrutura. Desta forma, o espaço total de memória gasto pela lista é proporcional ao número de elementos nela armazenados. No entanto, não podemos garantir que os elementos da lista sejam armazenados em posições contíguas de memória, não sendo possível, portanto, o acesso direto aos elementos da lista. Para que seja possível percorrer todos os elementos da lista, devemos explicitamente guardar o encadeamento dos elementos, o que é feito armazenando-se, junto com a informação de cada elemento, um ponteiro para o próximo elemento da lista.
A figura a seguir ilustra o arra…
Para realizar uma analise forense em ambiente Windows 10, o perito precisa conhecer características do sistema operacional e dos sistemas de arquivos usados.
Descreva, em no máximo 15 linhas, em que consiste o conceito de Alternate Data Stream e o conceito de File Slack Space, e como eles podem ser usados por atacantes.



