Os elementos são frequentemente adicionados na parte traseira e removidos da frente em uma fila normal. Por outro lado, podemos adicionar e remover os componentes da frente e de trás de um deque. A implementação de um deque em C ++ pode ser feita usando uma matriz ou uma lista vinculada.
Abaixo está uma lista da implementação da matriz do deque. Utilizamos as matrizes circulares para implementá-lo porque é uma fila de ponta dupla. A fila de ponta dupla é mais rápida e mais eficiente do que qualquer outra fila quando se trata de adicionar e remover os componentes de ambas as extremidades.
Representação de Deque
Os aspectos demorados de fazer vários processos DEQUE incluem:
Tipos de deque
Vamos verificar os tipos relacionados a Deque em C++.
Entrada deque restrito
A entrada é confinada em uma extremidade, mas permitida nos outros dois.
Saída deque restrito
Neste deque, a saída é proibida em uma extremidade, mas a inserção é permitida nas duas extremidades.
Criação de função deque C ++
Devemos primeiro incluir o arquivo de cabeçalho Deque para gerar um deque em C++.
#incluirDepois de importar esse arquivo, a seguinte sintaxe pode ser usada para gerar um deque:
# Deque deque-name;O tipo de dados que gostaríamos de armazenar no deque é indicado pelo tipo de objeto neste caso. Por exemplo: int, flutuador, string, etc. Deque-name é um nome variável para os dados que vamos usar.
Inicializando a função deque
Em C ++, a função DEQUE pode ser inicializada das seguintes maneiras:
dequeAmbos os métodos são usados para inicializar deque. Em ambos os nomes deque, “arr” é inicializado com valores inteiros 1, 3, 7, 0, 5, 8.
Métodos de Deque
A seguir estão os métodos de Deque:
Deque estrutura de dados
Vamos verificar os detalhes da estrutura de dados DEQUE na seção a seguir:
Procedimentos em um deque
Essas etapas devem ser seguidas antes de realizar as operações subsequentes:
Passo 1: Tome uma matriz n-dimensional (DEQUE). Na primeira posição, coloque dois ponteiros e defina a frente = -1 e traseira = 0.
Configure uma matriz deque e ponteiros.
Inserção na frente
Passo 1: Esta ação adiciona um componente na frente. Verifique a localização da frente.
Se a frente for menor que 5, redefina a frente para N-1 (último índice).
Passo 2: Reduza a frente em 1 se necessário. Agora, adicione a nova chave n à matriz [front]. Vamos supor n = 6.
Inserção na traseira
Passo 1: Esta ação adiciona um componente no raro. Certifique -se de que a matriz não esteja cheia.
Passo 2: Se a fila estiver cheia, redefina o valor traseiro para 0 (r = 0). Caso contrário, levante o raro em 1.
etapa 3: Em uma matriz [traseira], adicione a nova chave 6.
Retire de frente
Passo 1: Um elemento na frente é removido durante o processo. Certifique -se de que o deque não esteja vazio.
Passo 2: A exclusão não é possível se o deque estiver vazio (front = -1) (condição de subfluxo). Defina a frente = -1 apenas e a traseira = -1 se o deque consistir em um elemento como a frente = traseira. Atribua o valor à frente (frente = 0) se a frente estiver no final (front = n - 1). Caso contrário, defina a frente para frente = frente+1.
Retire da parte traseira
Passo 1: Um elemento no final é removido durante o processo. Certifique -se de que o deque não esteja vazio.
Passo 2: A exclusão não é possível se o deque estiver vazio (front = -1) (condição de subfluxo). Defina a frente = -1 e a traseira = -1 se o deque tiver apenas um único elemento (front = traseiro). Caso contrário, prossiga com as seguintes etapas. Vamos seguir em direção à frente, traseira = n - 1 se a traseira estiver na frente (traseira = 0). Caso contrário, defina o raro = raro-1.
Exemplo 1: Criando Deque
Neste exemplo, criamos um deque. Primeiro, incluímos nossos arquivos de cabeçalho "#include" e #include, onde #include comanda o pré -processador para incluir o arquivo de cabeçalho iostream e deque, que contém todas as funções do programa.
#incluirDepois disso, descrevemos uma função de exibição que é usada para executar os valores de deque que atribuímos a ele.
Movendo -se para nossa função principal, o int main () indica que nossa função deve retornar um valor inteiro no final da execução, o que retornamos 0 na conclusão do programa usando uma inicialização uniforme “Deque Mydeque 4, 2, 7 , 5,8 ”. Neste "int" é o tipo de dados de valores que atribuímos e Mydeque é o nome que usamos para o nosso deque. Atribuímos os valores inteiros ao deque chamado Mydeque que são 4, 2, 7, 5, 8. Para exibir nosso deque, usamos o loop for para um tamanho fixo. E então, pressionamos o botão Executar ou F7 para obter a saída do programa.
Exemplo 2: Adicionando mais valores a um deque
Neste exemplo, adicionamos mais valores a um deque. Depois de adicionar os arquivos de cabeçalho necessários para este programa, passamos para nossa principal função do tipo de dados inteiro “Deque var 0, 1, 2”. Neste "int" é o tipo de dados de valores que atribuímos e "var" é o nome que usamos para o nosso deque. Atribuímos os valores inteiros ao deque chamado "var" que são 0, 1 e 2. Em seguida, empurramos dois elementos, elemento 8 na frente do deque e elemento 5 no final do deque, usando as funções push_front () e push_back (). Então, o deque resultante que temos é 8, 0, 1 e 5.
#incluirDepois que terminamos com a codificação deste exemplo, compilamos e executamos em qualquer compilador. O resultado está representando a saída esperada do código anterior.
Exemplo 3: Atualizando elementos em índices especificados
Neste exemplo, atualizamos os valores em um deque depois de incluir nossos arquivos de cabeçalho "#include" e "#include" para este código executável.
#incluirAgora, vamos para a nossa principal função, na qual inicializamos nosso deque chamado "var" com os valores 1 e 2. Em seguida, usamos um loop para exibir os valores do nosso deque inicializado. Para atualizar os valores deque, usamos a função AT () (como sabemos, a função AT () é usada para se referir à posição especificada no DEQUE) no índice 0 e 1, atribuindo novos valores a "var". Estes são 3 e 4. Então, nosso dequeue atualizado é 3 e 4. Depois de preparar nosso código, compilamos -o usando qualquer ferramenta do compilador. Aqui está a saída desejada do nosso código:
Exemplo 4: Usando o iterador para remover os valores
Neste exemplo, usamos os iteradores para acessar os elementos no deque. Um objeto que aponta para um elemento dentro de um contêiner é chamado de iterador.
#incluirDeque pode ser iterado para frente e para trás usando o deque :: cbegin e deque :: cend, e nos dois sentidos usando o deque :: crbegin e deque :: crend.
Inicialmente, criamos um iterador que pode apontar para um deque de números inteiros chamados "var". Então, apontamos para os seguintes elementos usando o iterador "var_inter". O iterador que o método BEGN () retorna aponta para o primeiro elemento. O "Begin () + 1" gera um iterador usando o índice 1 do elemento como ponto de partida. Como você pode ver, usamos o VAR.end () - 1 em vez do Var.fim().
Isso ocorre porque o iterador para o método end () links para um iterador que passa pelo último elemento. Para obter o último elemento, deduzimos 1. Usamos o operador de indireção * para obter o valor de um elemento depois de usar o inter_var para apontar para ele.
Operações de Deque
As operações fundamentais que podem ser realizadas em Deque são as seguintes:
Conclusão
Deque é a melhor opção porque é mais rápido e ajuda o código a ser executado mais rapidamente. O deque opera melhor para sequências de log. Este artigo é baseado na implementação da DEQUE e em seus principais métodos, que nos ajudam a modificar o deque de acordo com nossas necessidades. Nosso objetivo é explicar o deque e seus métodos, bem como exemplos de como usar o deque e quando usá -lo. A ferramenta que usamos para implementar o código é o compilador C ++. Fizemos um esforço sincero para tornar este tutorial o mais simples e compreensível para você possível.