Resumo[1]
Resumo[1]
Resumo[1]
Atributos em Comum:
Estrutura Base:
Exemplo de Nó Dinâmico:
struct Node {
int data; // Valor armazenado
Node* next; // Ponteiro para o próximo nó (ou anterior
em listas duplamente encadeadas)
};
Tamanho ou Contador:
int count; // Número de elementos na estrutura
Operações em Comum:
As seguintes operações aparecem em todas as estruturas, ainda que
implementadas de forma diferente:
Inserção:
Todas as estruturas têm uma operação para inserir novos
elementos.
void Append(int x); // Insere um elemento
Remoção:
Há sempre uma operação para remover elementos.
void Serve(); // Remove um elemento (como o início ou o
topo)
Consulta:
Funções para acessar elementos (como o início ou o final) sem
removê-los.
int Front(); // Retorna o primeiro elemento
int Back(); // Retorna o último elemento
Verificação de Estado:
Operações para verificar se a estrutura está vazia ou cheia.
bool IsEmpty(); // Verifica se a estrutura está vazia
Limpeza:
Função para esvaziar a estrutura.
void Clear(); // Esvazia a estrutura
Fila
Características:
Baseada no conceito FIFO (First In, First Out).
O primeiro elemento inserido é o primeiro a ser removido.
Operações Específicas:
Append:
Insere no final.
void Append(int x); // Insere no final
Serve:
Remove do início.
void Serve(); // Remove do início
Lista Simples
Características:
Uma sequência linear de nós conectados por ponteiros.
Permite inserir e remover em posições arbitrárias.
Operações Específicas:
Inserir em qualquer posição.
void Insert(int position, int x); // Insere em
uma posição específica
Remover de qualquer posição.
void Delete(int position); // Remove de
uma posição específica
Lista Ordenada
Características:
Similar à lista simples, mas os elementos são mantidos em ordem.
A inserção coloca o elemento na posição correta automaticamente.
Operações Específicas:
Insert: Insere em ordem.
void Insert(int x); // Insere em ordem
Delete: Remove um elemento
void Delete(int x); // Remove um elemento
específico
Operações Básicas
bool IsEmpty(); // Verifica se está vazia
void Clear(); // Esvazia a estrutura
int Size(); // Retorna o número de elementos
int Front(); // Retorna o primeiro elemento
int Back(); // Retorna o último elemento (para listas
e filas)
Inserção e Remoção
Inserção no início (para pilha ou listas simples):
void Push(int x) {
Node* newNode = new Node;
newNode->data = x;
newNode->next = head;
head = newNode;
count++;
}
Conceitos Teóricos
Diferença entre Estruturas:
Pilha (LIFO): Último a entrar é o primeiro a sair.
Fila (FIFO): Primeiro a entrar é o primeiro a sair.
Lista Simples: Inserção e remoção em qualquer posição.
Lista Ordenada: Mantém os elementos em ordem.
Lista Duplamente Encadeada com Sentinela: Facilitam manipulação, com
ponteiros para o próximo e anterior e um nó sentinela.
Sentinelas:
Saber o que são:
Nós fictícios usados em listas duplamente encadeadas para simplificar a
lógica.
Como funcionam:
Sentinelas não armazenam dados e evitam condições especiais para
"início" e "fim".
Implementação
Operações que aparecem frequentemente:
Inserção (no início, no final ou em posição arbitrária).
Remoção (no início, no final ou em posição arbitrária).
Busca de elementos.
Esvaziar a estrutura.
Retornar o tamanho da estrutura.
Exemplo:
Node* newNode = new Node;
newNode->data = x;
newNode->next = head;
head = newNode;
Exemplo:
while (head != nullptr) {
Node* temp = head;
head = head->next;
delete temp;
}