Implementação de Estruturas de Dados Lineares

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual é o principal problema com o uso de arrays para armazenar coleções de elementos?

  • Arrays têm tamanho fixo, dificultando a expansão. (correct)
  • Arrays exigem muito espaço de memória, tornando-os ineficientes.
  • Arrays não podem ser modificados após sua criação.
  • Arrays são muito complexos de implementar.

Quando se trata de inserir ou remover elementos em posições intermediárias, arrays, em comparação às listas ligadas, são:

  • Menos eficientes, pois a operação exige a criação de novo array.
  • Mais lentos, pois podem exigir o deslocamento de vários elementos. (correct)
  • Mais rápidos, especialmente para grandes quantidades de dados.
  • Equivalentes em termos de desempenho, com pouca diferença perceptível.

Qual das seguintes características NÃO é uma vantagem das listas ligadas em relação aos arrays?

  • Inserção e remoção eficientes em qualquer posição.
  • Capacidade de redimensionamento dinâmico.
  • Acesso rápido a elementos específicos por índice. (correct)
  • Memória alocada dinamicamente, conforme necessário.

O que cada nodo numa lista ligada simples (SLL) armazena, além do elemento?

<p>Um ponteiro para o nodo seguinte. (B)</p> Signup and view all the answers

As listas ligadas, em relação aos arrays, podem ser consideradas uma estrutura de dados:

<p>Dinâmicas, com tamanho variável. (B)</p> Signup and view all the answers

A classe Node, definida como genérica e interna à classe SLL, serve para:

<p>Representar um nodo na lista ligada, capaz de armazenar qualquer tipo de elemento. (B)</p> Signup and view all the answers

Qual é a principal diferença entre a SLL (Lista Ligada Simples) e a DLL (Lista Ligada Dupla)?

<p>A SLL contém ponteiros para o próximo nodo, a DLL também contém ponteiros para o nodo anterior. (A)</p> Signup and view all the answers

Em relação à capacidade de armazenamento, qual das seguintes afirmações sobre as listas ligadas é CORRETA?

<p>A capacidade é limitada pela quantidade de memória disponível no sistema. (A)</p> Signup and view all the answers

Qual é a operação mais ineficiente em uma lista simplesmente ligada (SLL)?

<p>Remover o último nodo da lista (A)</p> Signup and view all the answers

Como é chamado o apontador que referencia o nodo anterior em uma lista duplamente ligada (DLL)?

<p>prev (D)</p> Signup and view all the answers

Qual é a complexidade operacional da inserção e remoção em uma lista simplesmente ligada (SLL) quando se trata do início da lista?

<p>O(1) (C)</p> Signup and view all the answers

Quais nodos especiais são frequentemente adicionados em uma lista duplamente ligada (DLL) para simplificar operações de inserção e remoção?

<p>Nodos header e trailer (C)</p> Signup and view all the answers

O que acontece quando o apontador head de uma lista simplesmente ligada (SLL) é movido para o nodo seguinte?

<p>O nodo anterior é imediatamente coletado como lixo. (D)</p> Signup and view all the answers

Qual estrutura de dados permite percorrer nodos em ambas as direções?

<p>Lista duplamente ligada (DLL) (A)</p> Signup and view all the answers

Qual das seguintes opções representa um ponto fraco de uma lista simplesmente ligada (SLL) comparada a uma lista duplamente ligada (DLL)?

<p>Impossibilidade de percorrer a lista em ambas as direções (A)</p> Signup and view all the answers

Por que a remoção do último nodo em uma lista simplesmente ligada (SLL) é considerada uma operação ineficiente?

<p>Porque requer percorrer a lista até o penúltimo nodo (D)</p> Signup and view all the answers

Qual é o motivo para incluir os atributos tail e size na classe SLL?

<p>A inclusão de <code>tail</code> e <code>size</code> torna a implementação dos métodos de inserção e remoção mais eficiente. (A)</p> Signup and view all the answers

Qual é o primeiro passo para inserir um elemento no início de uma SLL?

<p>Criar o novo nodo e atribuir a ele o elemento a ser inserido. (C)</p> Signup and view all the answers

Qual é o último passo para inserir um elemento no fim da SLL?

<p>Atualizar o atributo <code>size</code> da lista para aumentar o tamanho da lista em 1. (A)</p> Signup and view all the answers

No contexto da inserção de um elemento no fim da SLL, qual é a função do passo 5?

<p>Atualizar o ponteiro <code>tail</code> para apontar para o novo nodo. (A)</p> Signup and view all the answers

Qual dos seguintes passos não é necessário para inserir um elemento no início de uma SLL?

<p>Atualizar o ponteiro <code>tail</code> da lista para apontar para o novo nodo. (B)</p> Signup and view all the answers

Qual dos seguintes NÃO é um atributo da classe SLL?

<p>length (C)</p> Signup and view all the answers

Por que a inclusão de tail e size na classe SLL torna alguns métodos mais eficientes?

<p>Isso reduz o número de iterações necessárias para encontrar o último nodo da lista. (A)</p> Signup and view all the answers

Qual seria a principal dificuldade em implementar uma lista ligada simples (SLL) sem o atributo tail?

<p>Seria necessário iterar pela lista inteira para encontrar o último nodo. (A)</p> Signup and view all the answers

Qual é o comportamento de uma stack na manipulação de dados?

<p>LIFO (Last In, First Out) (A)</p> Signup and view all the answers

Qual operação não pertence às funcionalidades básicas de uma fila (queue)?

<p>push(objeto) (A)</p> Signup and view all the answers

O que acontece quando um objeto é inserido em uma queue?

<p>É colocado no fim da fila (D)</p> Signup and view all the answers

Qual método de uma queue devolve o objeto que está na frente sem removê-lo?

<p>first() (B)</p> Signup and view all the answers

Qual dos seguintes métodos retorna a quantidade de objetos em uma queue?

<p>size() (B)</p> Signup and view all the answers

Qual das seguintes operações é responsável por adicionar elementos a uma fila?

<p>enqueue() (D)</p> Signup and view all the answers

Qual das seguintes afirmações sobre as filas (Queue) é INCORRETA?

<p>Os métodos poll() e peek() lançam exceções quando a fila está vazia. (A)</p> Signup and view all the answers

Qual método na interface java.util.Queue é correspondente ao método que remove um elemento e lança uma exceção se a fila estiver vazia?

<p>remove() (A)</p> Signup and view all the answers

Qual é a principal diferença entre a implementação de uma fila estática e uma fila dinâmica?

<p>Fila estática usa um array, fila dinâmica usa listas ligadas. (B)</p> Signup and view all the answers

O que acontece quando tentamos adicionar um elemento a uma fila estática cheia usando o método add()?

<p>Lança uma IllegalStateException. (D)</p> Signup and view all the answers

Qual é a finalidade dos métodos poll() e peek() na implementação de filas?

<p>Devolver e remover elementos, retornando null para filas vazias. (B)</p> Signup and view all the answers

Em uma fila, o que indica a posição do próximo elemento a ser removido?

<p>O índice do primeiro elemento. (D)</p> Signup and view all the answers

Qual é a principal aplicação de uma fila na computação?

<p>Gerenciamento de filas de espera. (D)</p> Signup and view all the answers

Qual é a principal limitação de uma stack estática?

<p>O tamanho deve ser definido inicialmente e não pode ser alterado. (C)</p> Signup and view all the answers

Qual é a principal vantagem de uma stack dinâmica sobre uma stack estática?

<p>A memória utilizada é ajustada conforme necessário. (D)</p> Signup and view all the answers

Na implementação de uma stack dinâmica usando uma lista ligada simples, qual o método utilizado para acessar o elemento do topo?

<p>top() (B)</p> Signup and view all the answers

Na implementação de uma stack dinâmica, qual o atributo da classe utilizada para armazenar os elementos?

<p>SinglyLinkedList (C)</p> Signup and view all the answers

Quando se considera a política de inserção e remoção em uma stack dinâmica, como são feitos estes processos?

<p>Through push() for insertion and pop() for removal. (A)</p> Signup and view all the answers

Qual é uma característica comum de uma stack dinâmica implementada com uma lista ligada simples?

<p>O acesso aos elementos ocorre pelo início da lista. (B)</p> Signup and view all the answers

Para que serve a classe LinkedStack na implementação de uma stack dinâmica?

<p>Mapear os métodos da SinglyLinkedList para a interface Stack. (A)</p> Signup and view all the answers

Qual método é usado para remover o elemento do topo em uma stack dinâmica?

<p>pop() (B)</p> Signup and view all the answers

Como é alterada a posição do primeiro elemento de uma fila após a remoção de um elemento?

<p>f = (f+1) % N; (D)</p> Signup and view all the answers

Qual é a principal característica de uma Deque em comparação a uma Queue?

<p>A Deque suporta a inserção e remoção em ambas as extremidades. (C)</p> Signup and view all the answers

Qual das seguintes implementações permite que uma fila tenha um comportamento semelhante a uma lista ligada simples?

<p>LinkedQueue (B)</p> Signup and view all the answers

Qual é a operação realizada pelo algoritmo dequeue quando a fila está vazia?

<p>Retorna um objeto nulo. (D)</p> Signup and view all the answers

Qual das seguintes situações pode ser modelada mais eficientemente por uma Deque do que por uma Queue tradicional?

<p>A lista de espera em um restaurante onde clientes podem ser retirados e colocados novamente no início. (C)</p> Signup and view all the answers

O que acontece com o tamanho da fila após a execução bem-sucedida do algoritmo dequeue?

<p>O tamanho diminui em um. (D)</p> Signup and view all the answers

Qual das seguintes afirmações é verdadeira sobre o funcionamento de uma Deque?

<p>Ela pode atuar como uma Stack ou uma Queue. (D)</p> Signup and view all the answers

De acordo com a estrutura de uma Queue estática, o que é necessário para a remoção de um elemento?

<p>Um índice que aponta para o primeiro elemento. (D)</p> Signup and view all the answers

O que acontece ao inserir um elemento no início de uma deque quando ela está cheia?

<p>Uma exceção IllegalStateException é lançada. (C)</p> Signup and view all the answers

Qual método é responsável por decrementar o número de elementos na deque após remover o último elemento?

<p>removeLast() (B)</p> Signup and view all the answers

Qual é a função do método last() na implementação de uma deque?

<p>Devolve o último elemento da deque. (B)</p> Signup and view all the answers

Qual dos métodos da interface Iterator verifica se existe mais elementos a serem iterados?

<p>hasNext() (C)</p> Signup and view all the answers

O que acontece quando o método next() é chamado numa coleção ao usar a interface Iterator?

<p>Ele devolve o próximo elemento e avança para o seguinte. (B)</p> Signup and view all the answers

Qual é o requisito básico para que uma coleção se torne iterável?

<p>A coleção deve implementar a interface Iterable. (C)</p> Signup and view all the answers

O que um iterador específico deve retornar ao ser chamado?

<p>Um iterador do tipo Iterator. (A)</p> Signup and view all the answers

Qual é a principal finalidade do método iterator() na interface Iterable?

<p>Devolver um iterador para a coleção. (D)</p> Signup and view all the answers

Como devem ser definidas as classes internas para os iteradores específicos?

<p>Devem implementar a interface java.util.Iterator. (B)</p> Signup and view all the answers

O que deve refletir a interface Stack para garantir que qualquer stack seja iterável?

<p>A interface Stack deve estender a interface Iterable. (D)</p> Signup and view all the answers

Qual das seguintes coleções não foi mencionada como exemplo na implementação de iteradores?

<p>ArrayMap. (A)</p> Signup and view all the answers

Qual é a característica de um 'lazy iterator' em comparação a outros estilos de iteradores?

<p>Carrega elementos sob demanda. (C)</p> Signup and view all the answers

Qual é o primeiro passo ao tornar as coleções como ArrayStack e LinkedStack iteráveis?

<p>Implementar a interface Iterable na coleção. (C)</p> Signup and view all the answers

Qual é a principal razão para tornar a lista ligada iterável na implementação da coleção LinkedStack?

<p>Para permitir que a coleção LinkedStack seja usada com loops <code>for</code> e <code>foreach</code>. (B)</p> Signup and view all the answers

Como é que a coleção LinkedStack, que usa uma lista ligada internamente, consegue suportar a iteração?

<p>Implementando a interface <code>Iterator</code> e fornecendo métodos para acessar os nodos da lista ligada. (D)</p> Signup and view all the answers

Qual é a principal vantagem de tornar a lista ligada iterável no contexto da implementação de coleções baseadas em listas ligadas?

<p>Simplifica a implementação de coleções iteráveis com base em listas ligadas. (A)</p> Signup and view all the answers

Qual é a interface que as coleções iteráveis devem implementar para permitir a iteração?

<p><code>Iterable</code> (C)</p> Signup and view all the answers

Em qual das seguintes situações a implementação de iteradores para listas ligadas seria particularmente útil?

<p>Quando se pretende iterar sobre todos os elementos da lista ligada, um por um. (C)</p> Signup and view all the answers

Qual das seguintes afirmações é verdadeira sobre a relação entre a interface Stack e a interface Iterable ?

<p>A interface <code>Stack</code> herda da interface <code>Iterable</code> para tornar as coleções <code>Stack</code> iteráveis. (C)</p> Signup and view all the answers

Qual é a principal diferença entre a iteração sobre uma coleção ArrayQueue e uma coleção ArrayDeque usando um iterador?

<p>A iteração para <code>ArrayDeque</code> oferece mais flexibilidade, permitindo a iteração em ambas as direções (frente e trás). (A)</p> Signup and view all the answers

Qual é o principal benefício de usar iteradores para iterar sobre coleções em geral?

<p>Os iteradores simplificam a iteração sobre coleções, abstraindo os detalhes da implementação interna. (A)</p> Signup and view all the answers

No contexto apresentado, qual é o significado da palavra chave protected aplicada aos métodos addBetween e remove?

<p>Os métodos agora podem ser acessados por classes dentro do mesmo pacote e por subclasses da classe <code>SortedDoublyLinkedList</code>. (A)</p> Signup and view all the answers

A frase "Felizmente, o Java permite-nos impor este tipo de restrição..." refere-se a qual restrição?

<p>A restrição de que o tipo de dados <code>E</code> utilizado na classe <code>SortedDoublyLinkedList</code> deve implementar a interface <code>Comparable</code>. (A)</p> Signup and view all the answers

Na classe SortedDoublyLinkedList, qual é o propósito do método ceilingNode(e)?

<p>Encontrar o nó que contém o elemento <code>e</code> ou o nó seguinte a ele. (B)</p> Signup and view all the answers

Por que a restrição extends Comparable é aplicada ao parâmetro tipo E na classe SortedDoublyLinkedList?

<p>Para garantir que os objetos do tipo <code>E</code> possam ser comparados usando o método <code>compareTo()</code>. (B)</p> Signup and view all the answers

No código do método put(e), o que o bloco else faz?

<p>Insere o elemento <code>e</code> na lista, mantendo a ordem crescente, antes do nó <code>n</code>. (A)</p> Signup and view all the answers

Qual é a principal vantagem de utilizar uma SortedDoublyLinkedList em comparação com uma DoublyLinkedList?

<p>A <code>SortedDoublyLinkedList</code> garante que os elementos sejam armazenados em ordem crescente, simplificando a busca por elementos específicos. (A)</p> Signup and view all the answers

Qual é o objetivo do método remove(e) na classe SortedDoublyLinkedList?

<p>Remover o elemento <code>e</code> da lista, se existir, e retornar o elemento removido. (D)</p> Signup and view all the answers

Com base no trecho do código fornecido, qual é o tipo de estrutura de dados implementada pela classe SortedDoublyLinkedList?

<p>Lista ligada duplamente ordenada. (A)</p> Signup and view all the answers

Em relação à iterabilidade da SortedDoublyLinkedList, o que significa a frase "já é uma estrutura iterável"?

<p>A classe SortedDoublyLinkedList herda o método <code>iterator()</code> da classe DoublyLinkedList, que por sua vez implementa <code>Iterable</code>. (A)</p> Signup and view all the answers

Por que a afirmação "Assume-se (por herança) como implementadora da interface Iterable" é verdadeira para a SortedDoublyLinkedList?

<p>A classe SortedDoublyLinkedList herda o método <code>iterator()</code> da classe <code>DoublyLinkedList</code>, que implementa a interface <code>Iterable</code>. (A)</p> Signup and view all the answers

De acordo com o contexto fornecido, qual o objetivo da classe Entry?

<p>Representar um par chave-valor, sendo genérica para diferentes tipos de dados. (D)</p> Signup and view all the answers

Qual a razão para que a chave da classe Entry seja comparável (necessariamente comparável)?

<p>Para permitir a ordenação dos nodos na <code>SortedDoublyLinkedList</code>. (A)</p> Signup and view all the answers

Qual a principal diferença entre a interface Map do Java e a versão simplificada apresentada no texto?

<p>A versão simplificada possui menos métodos que a interface <code>Map</code> original do Java. (B)</p> Signup and view all the answers

Qual a principal função do header e do trailer na lista ligada duplamente ordenada (SortedDoublyLinkedList)?

<p>Oferecer um ponto de referência para percorrer a lista em ambas as direções. (A)</p> Signup and view all the answers

A partir do texto, qual a característica essencial para que uma lista ligada duplamente ordenada (SortedDoublyLinkedList) funcione corretamente?

<p>A capacidade de ordenar os elementos da lista em ordem crescente ou decrescente. (D)</p> Signup and view all the answers

Que tipo de classe é a classe AbstractMap?

<p>Uma classe abstrata que implementa parcialmente a interface <code>Map</code>. (A)</p> Signup and view all the answers

O que a classe interna Entry faz?

<p>Armazena as chaves e valores de um dicionário. (C)</p> Signup and view all the answers

Qual é a vantagem de usar uma classe abstrata como AbstractMap?

<p>Permite a criação de diferentes tipos de dicionários sem a necessidade de reimplementar métodos comuns. (A)</p> Signup and view all the answers

Qual é a função do método isEmpty() na classe AbstractMap?

<p>Verifica se o dicionário está vazio. (B)</p> Signup and view all the answers

Qual é a razão para a classe Entry implementar a interface Comparable?

<p>Permitir que os pares chave/valor sejam ordenados em um dicionário. (D)</p> Signup and view all the answers

Qual dos seguintes métodos NÃO está definido na interface Map?

<p>clear() (D)</p> Signup and view all the answers

Qual é a finalidade do método put() na interface Map?

<p>Inserir um novo par chave/valor no dicionário. (D)</p> Signup and view all the answers

O que acontece quando o método setValue() é chamado em um objeto Entry?

<p>O valor associado à chave é modificado. (D)</p> Signup and view all the answers

Qual dos seguintes NÃO é um motivo para coleções ordenadas serem utilizadas em dicionários?

<p>A ordenação torna desnecessária a busca por valores, pois a chave determina diretamente a posição do elemento. (D)</p> Signup and view all the answers

Flashcards

Listas Ligadas

Estrutura de dados dinâmica que substitui arrays, permitindo crescimentos e diminuições na capacidade.

Limitações do Array

Capacidade fixa ao ser criado, dificultando inserções e remoções no meio.

Lista Ligada Simples (SLL)

Estrutura de dados dinâmica com nodos que apontam para o próximo.

Nodos

Elementos de uma lista ligada que contêm dados e um ponteiro para o próximo nodo.

Signup and view all the flashcards

Classe Node

Classe genérica interna à SLL, permitindo modificar o tipo de dados armazenados.

Signup and view all the flashcards

Ponteiro em SLL

Referência no nodo que aponta para o próximo nodo na lista.

Signup and view all the flashcards

Estrutura Dinâmica

Capacidade de expandir ou contrair conforme os dados se alteram na lista ligada.

Signup and view all the flashcards

Referência em Java

Apontador utilizado em listas ligadas para referenciar o próximo nodo.

Signup and view all the flashcards

SLL (Single Linked List)

Uma estrutura de dados linear que consiste em nodos, onde cada nodo aponta para o próximo.

Signup and view all the flashcards

Atributos da SLL

Inclui head, tail e size para facilitar operações e controle da lista.

Signup and view all the flashcards

Inserção no início da SLL

Processo de adicionar um novo nodo no início da lista.

Signup and view all the flashcards

Passos para inserir no início

  1. Criar novo nodo; 2. Atribuir elemento; 3. Apontar para o primeiro nodo; 4. Atualizar head.
Signup and view all the flashcards

Inserção no fim da SLL

Adição de um novo nodo ao final da lista.

Signup and view all the flashcards

Passos para inserir no fim

  1. Criar novo nodo; 2. Atribuir elemento; 3. Apontar para null; 4. Aponte o último nodo para o novo nodo.
Signup and view all the flashcards

head

O primeiro nodo de uma SLL, servindo como ponto de entrada.

Signup and view all the flashcards

tail

O último nodo de uma SLL, geralmente com o ponteiro null.

Signup and view all the flashcards

Método de inserção SLL

Processo de adicionar um novo nodo na lista ligada simples (SLL).

Signup and view all the flashcards

Remoção do primeiro elemento SLL

Mover o apontador 'head' para o próximo nodo, eliminando o nodo atual da memória.

Signup and view all the flashcards

Complexidade da remoção SLL

Remoção do último nodo é O(n), porque percorre toda a lista.

Signup and view all the flashcards

Lista Duplamente Ligada (DLL)

Lista onde cada nodo tem apontadores para o anterior e o próximo, permitindo percorrê-la em ambos os sentidos.

Signup and view all the flashcards

Nodos sentinelas

Nodos especiais no início e fim da lista duplamente ligada, que não guardam elementos.

Signup and view all the flashcards

Apontadores em DLL

Cada nodo em uma lista duplamente ligada tem um apontador 'prev' e um 'next'.

Signup and view all the flashcards

Inserção em extremidades DLL

Adicionar nodos sempre entre os nodos, com ajuda de sentinelas, evitando casos especiais.

Signup and view all the flashcards

Complexidade de Inserção/removal DLL

Inserções e remoções em uma DLL são realizadas em O(1) porque não se precisa percorrer a lista.

Signup and view all the flashcards

Stack

Estrutura de dados que opera no modo LIFO (Last In, First Out).

Signup and view all the flashcards

Queue (Fila)

Estrutura de dados que funciona no modo FIFO (First In, First Out).

Signup and view all the flashcards

Operação enqueue

Insere um objeto no fim da queue.

Signup and view all the flashcards

Operação dequeue

Remove e devolve o objeto da frente da queue.

Signup and view all the flashcards

Operação first()

Devolve o objeto da frente da queue, sem removê-lo.

Signup and view all the flashcards

Limitação da Stack Estática

Capacidade fixa que não pode ser alterada depois de definida.

Signup and view all the flashcards

Stack Dinâmica

Uma stack que pode crescer conforme a necessidade, utilizando SLL.

Signup and view all the flashcards

Métodos da Stack

Principais métodos incluem push(), pop() e top().

Signup and view all the flashcards

LinkedStack

Classe que implementa Stack usando uma lista ligada simples (SLL).

Signup and view all the flashcards

Política de Inserção

Inserção de elementos na parte superior da stack usando push().

Signup and view all the flashcards

Política de Remoção

Remoção de elementos do topo da stack usando pop().

Signup and view all the flashcards

Acesso ao Topo

Método top() consulta o elemento do topo da stack.

Signup and view all the flashcards

Uso de SLL na Stack

Stack dinâmica usa SLL para superar limitações de array.

Signup and view all the flashcards

Método addFirst(e)

Adiciona um elemento no começo da deque, ajustando a posição de inserção e incrementando o tamanho.

Signup and view all the flashcards

removeLast()

Remove e retorna o último elemento da deque, ajustando o tamanho.

Signup and view all the flashcards

Método last()

Retorna o último elemento da deque, sem removê-lo, na posição (f+sz-1)%N.

Signup and view all the flashcards

Interface Iterator

Interface em Java para iterar coleções com métodos hasNext() e next().

Signup and view all the flashcards

Método hasNext()

Verifica se existe pelo menos mais um elemento na coleção para iterar.

Signup and view all the flashcards

Método isEmpty()

Verifica se a fila está vazia, retornando um booleano.

Signup and view all the flashcards

Método first()

Retorna o primeiro elemento da fila, ou null se estiver vazia.

Signup and view all the flashcards

Método enqueue(E element)

Adiciona um elemento na fila, no final da estrutura.

Signup and view all the flashcards

Método dequeue()

Remove e retorna o primeiro elemento da fila, ou null se vazia.

Signup and view all the flashcards

interface java.util.Queue

Interface em Java para implementação de filas, com métodos padrão.

Signup and view all the flashcards

Método poll()

Remove e retorna o primeiro elemento ou null se a fila estiver vazia.

Signup and view all the flashcards

Queue estática

Fila implementada com um array, adicionando à direita e retirando à esquerda.

Signup and view all the flashcards

Método offer()

Adiciona elemento à fila com capacidade limitada, retornando false se cheia.

Signup and view all the flashcards

Dequeue

Método para remover o primeiro elemento de uma queue.

Signup and view all the flashcards

Queue dinâmica

Fila que pode crescer e diminuir conforme necessário, geralmente implementada com listas ligadas.

Signup and view all the flashcards

Deque

Fila com dupla terminação que permite inserção e remoção de ambos os lados.

Signup and view all the flashcards

SinglyLinkedList

Estrutura de dados que permite a implementação de filas dinâmicas.

Signup and view all the flashcards

Atributos da Deque

Elementos que permitem operações em ambas as extremidades da estrutura.

Signup and view all the flashcards

Implementação de Deque

Mapear métodos de listas ligadas para a interface de uma deque.

Signup and view all the flashcards

Uso prático de Deque

Ideal para situações em que elementos são adicionados e removidos de ambos os lados.

Signup and view all the flashcards

Iteradores Lazy

Iteradores que produzem elementos sob demanda, não todos de uma vez.

Signup and view all the flashcards

Coleções Iteráveis

Coleções que implementam a interface Iterable para permitir iteração.

Signup and view all the flashcards

Interface Iterable

Interface que define como as coleções devem se tornar iteráveis.

Signup and view all the flashcards

Método iterator()

Método que retorna um iterador específico para a coleção.

Signup and view all the flashcards

Classe Interna do Iterador

Classe que implementa a interface Iterator dentro da coleção.

Signup and view all the flashcards

Interface Stack estendendo Iterable

Stack deve estender a interface Iterable para ser iterável.

Signup and view all the flashcards

Implementação de Stack

Stacks concretas devem implementar os métodos da interface Stack.

Signup and view all the flashcards

Iterador Instantâneo

Iterador que permite acessar elementos de forma imediata, útil em estruturas não lineares.

Signup and view all the flashcards

Lista Duplamente Ligada Ordenada

Estrutura de dados onde os elementos estão organizados e cada nodo tem referências para o anterior e o próximo.

Signup and view all the flashcards

Método put()

Método que insere um elemento na lista duplamente ligada ordenada, mantendo a ordem.

Signup and view all the flashcards

Método remove()

Método que remove um elemento específico da lista, se existir.

Signup and view all the flashcards

Iterable

Interface que permite que a lista duplamente ligada ordenada seja percorrida com um iterator.

Signup and view all the flashcards

Comparable

Interface que permite que classes implementem um método para comparar objetos.

Signup and view all the flashcards

Método compareTo()

Método da interface Comparable que define a ordem entre dois objetos.

Signup and view all the flashcards

Declaração de tipo genérico

Permite restringir um parâmetro de tipo E para classes que implementam Comparable.

Signup and view all the flashcards

XPTO

Classe genérica que exige que o parâmetro de tipo E seja comparável.

Signup and view all the flashcards

Interface Map

Interface em Java que define operações básicas para estruturas de mapa como size e put.

Signup and view all the flashcards

Classe AbstractMap

Classe abstrata que implementa parcialmente a interface Map, fornecendo funcionalidades comuns.

Signup and view all the flashcards

Classe Entry

Classe que representa um par de chave e valor dentro de um mapa.

Signup and view all the flashcards

Método getKey()

Método que retorna a chave do objeto Entry.

Signup and view all the flashcards

Método getValue()

Método que retorna o valor associado a uma chave no objeto Entry.

Signup and view all the flashcards

Comparable na classe Entry

Interface que permite comparar dois objetos Entry, essencial para ordenação.

Signup and view all the flashcards

Iterador

Estrutura que permite percorrer coleções de dados de forma sequencial.

Signup and view all the flashcards

Estrutura de Dados Linear

Estruturas que organizam dados em sequência, como listas e filas.

Signup and view all the flashcards

Dicionário

Coleção de pares chave/valor, como uma lista ligada.

Signup and view all the flashcards

Parâmetros K e V

Representam, respectivamente, o tipo de chave e o tipo de valor em Entry.

Signup and view all the flashcards

SortedDoublyLinkedList

Lista duplamente ligada ordenada que utiliza comparabilidade.

Signup and view all the flashcards

Interface Map do Java

Interface que define operações para coleções de pares chave/valor em Java.

Signup and view all the flashcards

Classe DLLIterator

Classe que implementa um iterador para listas duplamente ligadas (DLL).

Signup and view all the flashcards

Coleções ordenadas

Estruturas que mantêm elementos em uma sequência específica, facilitando operações de busca e inserção.

Signup and view all the flashcards

Inserção em dicionários

Colocação de elementos em uma posição específica, mantendo a ordem da coleção.

Signup and view all the flashcards

Study Notes

Implementação de Estruturas de Dados Lineares

  • As estruturas de dados lineares incluem listas ligadas, Stacks, Queues, Deques, Maps, Iteradores e Comparadores.
  • Os arrays são estruturas de dados de baixo nível, adequadas para guardar coleções de elementos de forma linear. No entanto, possuem capacidade fixa, o que pode ser um inconveniente se a coleção precisar de crescer ou diminuir. As operações de inserção e remoção no meio da estrutura podem ser morosas.
  • As listas ligadas oferecem uma alternativa dinâmica aos arrays. A capacidade da lista pode mudar de forma adaptável com a adição ou remoção de elementos. As operações de inserção e remoção de elementos no meio da lista não são morosas.
  • A lista ligada simples (Singly Linked List - SLL) se organiza com uma sequência de nodos. Cada nodo armazena um elemento e um apontador para o próximo nodo.
  • A classe Node é definida como genérica e interna à classe SLL, permitindo acomodar diferentes tipos de dados.
  • As listas duplamente ligadas (Doubly Linked Lists - DLL) podem ser percorridas em ambos os sentidos. Cada nodo armazena um elemento, um apontador para o nodo anterior (prev) e um apontador para o nodo seguinte (next).
  • Há nodos sentinelas (header e trailer) adicionados às DLL para facilitar operações nos extremos da lista, mesmo quando a lista está vazia.
  • A inserção é uma operação eficiente nas listas ligadas, uma vez que não é necessário deslocar elementos.
  • No entanto, a remoção de um elemento não é tão eficiente quanto a inserção.
  • As operações de inserção e remoção em listas ligadas são geralmente de complexidade O(1), exceto quando a operação visa um determinado elemento no meio da lista, onde podem ter complexidade O(n). Em listas duplamente ligadas esse tempo é ainda mais eficiente. As operações nos extremos O(1) em SLL e DLL.
  • As operações de inserção e remoção em listas ligadas são geralmente de complexidade O(1) nos extremos, e de O(n) no interior da lista. Em listas duplamente ligadas, as operações nos extremos também são O(1).

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team
Use Quizgecko on...
Browser
Browser