EstruturaDeDados
Carregando...
Procurando...
Nenhuma entrada encontrada
doubly_linked_list.hpp
Ir para a documentação deste ficheiro.
1#pragma once
2#include <stddef.h>
3
13template <class T>
15 private:
19 struct Node {
24 Node(const T &value);
25
31 ~Node();
32
33 T value;
34 Node *next;
35 Node *prev;
36 };
37
38 public:
44 template <class U>
45 class Iterator {
46 public:
51 auto &operator*() const;
52
58
64
71 bool operator==(const Iterator<U> &other) const;
72
79 bool operator!=(const Iterator<U> &other) const;
80
87 Iterator<U> operator+(size_t offset) const;
88
95 Iterator<U> operator-(size_t offset) const;
96
102 size_t operator-(const Iterator<U> other) const;
103
104 private:
110 Iterator(U *ptr, bool end);
111
112 U *node;
113 bool end;
114
115 friend class DoublyLinkedList;
116 };
117
120
125
131
138
145
150 size_t size() const;
151
156 bool empty() const;
157
164
171
178
185
190 void push_front(const T &value);
191
196 void push_back(const T &value);
197
203 void insert(iterator pos, const T &value);
204
210 void pop_front();
211
217 void pop_back();
218
224 void erase(iterator first, iterator last);
225
229 void clear();
230
237 const_iterator find(const T &item) const;
238
245 iterator find(const T &item);
246
253 bool contains(const T &item) const;
254
261 T &operator[](size_t index);
262
269 const T &operator[](size_t index) const;
270
274 void print() const;
275
276 private:
277 Node *head;
279 Node *tail;
281 size_t _size;
283};
284
285#include "../src/doubly_linked_list.hpp"
Iterador da lista duplamente encadeada.
Definição doubly_linked_list.hpp:45
Iterator< U > & operator++()
Incrementa o iterador para o próximo nó.
bool operator==(const Iterator< U > &other) const
Compara dois iteradores para verificar se são iguais.
Iterator< U > & operator--()
Decrementa o iterador para o nó anterior.
Iterator< U > operator-(size_t offset) const
Retorna um iterador retrocedido por um número específico de posições.
bool operator!=(const Iterator< U > &other) const
Compara dois iteradores para verificar se são diferentes.
size_t operator-(const Iterator< U > other) const
Calcula a distância entre dois iteradores.
Iterator< U > operator+(size_t offset) const
Retorna um iterador avançado por um número específico de posições.
auto & operator*() const
Desreferencia o iterador.
Representa uma lista duplamente encadeada de elementos do tipo genérico T.
Definição doubly_linked_list.hpp:14
bool empty() const
Verifica se a lista está vazia.
iterator find(const T &item)
Encontra um item na lista e retorna um iterador para ele.
iterator begin()
Retorna um iterador para o início da lista (apontando para o primeiro nó).
DoublyLinkedList(const DoublyLinkedList &list)
Construtor de cópia da lista duplamente encadeada.
bool contains(const T &item) const
Verifica se um item existe na lista.
T & operator[](size_t index)
Acessa um elemento por seu índice.
const T & operator[](size_t index) const
Acessa um elemento por seu índice.
size_t size() const
Obtém o tamanho da lista.
void pop_back()
Remove o último elemento da lista.
const_iterator find(const T &item) const
Encontra um item na lista e retorna um iterador para ele.
void insert(iterator pos, const T &value)
Insere um elemento em uma posição específica da lista.
DoublyLinkedList & operator=(const DoublyLinkedList &list)
Operador de atribuição para copiar uma lista duplamente encadeada.
iterator end()
Retorna um iterador para o final da lista (apontando para após o último nó).
void clear()
Remove todos os elementos da lista.
DoublyLinkedList()
Construtor padrão da lista duplamente encadeada.
const_iterator end() const
Retorna um iterador para o final da lista (apontando para após o último nó).
void push_back(const T &value)
Adiciona um elemento ao final da lista.
void push_front(const T &value)
Adiciona um elemento ao início da lista.
void erase(iterator first, iterator last)
Remove uma faixa de elementos da lista, definida pelos iteradores.
void pop_front()
Remove o primeiro elemento da lista.
void print() const
Imprime os elementos da lista.
~DoublyLinkedList()
Destruidor da lista duplamente encadeada.
const_iterator begin() const
Retorna um iterador para o início da lista (apontando para o primeiro nó).