A maior rede de estudos do Brasil

Exemplo de aplicação utilizando Lista Dupla Deque

Alguns exemplos em linguagem C++ desse tipo de aplicação.

Estrutura de Dados IESTÁCIO EAD

5 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Para responder essa questão devemos aplicar nosso conhecimento sobre estrutura de dados.


#include <iostream>

#include <deque>

using namespace std;

int main(int argc, char *argv[]){

deque<int> fila;

cout << "Antes de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos ao final da fila

fila.push_back(10);

fila.push_back(20);

// inserir elemento no início da fila

fila.push_front(30);

// fila: 30 10 20

cout << "\nDepois de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

cout << "\nMostrando os elementos da fila: ";

deque<int>::iterator it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n";

// limpar toda a fila

fila.clear();

cout << "\nDepois de limpar (clear) a fila: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos na frente

fila.push_front(10);

fila.push_front(20);

fila.push_back(30);

// fila: 20 10 30

// removendo o segundo elemento

fila.erase(fila.begin() + 1);

cout << "\nMostrando os elementos da fila: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n\nElemento da frente: " << fila.front();

cout << "\n\nUltimo elemento: " << fila.back();

it = fila.begin() + 1;

fila.insert(it, 10);

cout << "\n\nMostrando os elementos: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

// remover do início

fila.pop_front();

// remover do final

fila.pop_back();

cout << "\n\nTamanho da fila: " << fila.size() << endl;

return 0;

}


Portanto acima se encontra o exemplo clássico do uso de um deque. Nele podemos ver a inserção e remoção dos elementos no início e no final. É possível também consultar se a lista está vazia ou cheia.

Para responder essa questão devemos aplicar nosso conhecimento sobre estrutura de dados.


#include <iostream>

#include <deque>

using namespace std;

int main(int argc, char *argv[]){

deque<int> fila;

cout << "Antes de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos ao final da fila

fila.push_back(10);

fila.push_back(20);

// inserir elemento no início da fila

fila.push_front(30);

// fila: 30 10 20

cout << "\nDepois de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

cout << "\nMostrando os elementos da fila: ";

deque<int>::iterator it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n";

// limpar toda a fila

fila.clear();

cout << "\nDepois de limpar (clear) a fila: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos na frente

fila.push_front(10);

fila.push_front(20);

fila.push_back(30);

// fila: 20 10 30

// removendo o segundo elemento

fila.erase(fila.begin() + 1);

cout << "\nMostrando os elementos da fila: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n\nElemento da frente: " << fila.front();

cout << "\n\nUltimo elemento: " << fila.back();

it = fila.begin() + 1;

fila.insert(it, 10);

cout << "\n\nMostrando os elementos: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

// remover do início

fila.pop_front();

// remover do final

fila.pop_back();

cout << "\n\nTamanho da fila: " << fila.size() << endl;

return 0;

}


Portanto acima se encontra o exemplo clássico do uso de um deque. Nele podemos ver a inserção e remoção dos elementos no início e no final. É possível também consultar se a lista está vazia ou cheia.

User badge image

Joao Andre

Há mais de um mês

Cara ai tem uma Lista Dupla encadeada em C, Uma aplicação poderia ser simular uma fila de qualquer coisa como padaria pizzaria... Qualquer fila.

Clinetes vão chegando você emfila, enqueue(cliente); Vai saindo deenqueue(); Sai o primeiro a entrar, (primeiro que entra primeiro que sai).

/*
 * File:   ListaDE.h
 * Author: joao
 *
 * Created on 25 de Jun de 2017, 21:15
 */

#ifndef LISTADE_H
#define LISTADE_H
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#ifdef __cplusplus
extern "C" {
#endif
    //--------------------------------------------------------------------------

    struct DoubleLL {
        char nome[40];
        struct DoubleLL *prox, *ant;
    };
    typedef struct DoubleLL list;
    //--------------------------------------------------------------------------
    void enqueue(list **l, char info[]);
    list deenque(list **l);
    void init(list **l);
    void exibe(list *l);
    list* busca(list *l, char info[]);
    void exclui(list **l, char nome[]);
    //--------------------------------------------------------------------------

    void init(list **l) {
        *l = NULL;
    }
    //--------------------------------------------------------------------------

    list deenque(list **l) {
        list *aux;
        aux = *l;
        *l = (*l)->prox;
        *l->ant = NULL;
        return (aux);

    }

    void enqueue(list **l, char info[]) {
        list *aux, *nova = (list*) malloc(sizeof (list));
        strcpy(nova->nome, info);
        nova->ant = nova->prox = NULL;
        if (*l == NULL)
            *l = nova;
        else {
            aux = *l;
            while (aux->prox != NULL) {
                aux = aux->prox;
            }
            nova->ant = aux;
            aux->prox = nova;
        }
    }
    //--------------------------------------------------------------------------

    void exibe(list *l) {
        while (l != NULL) {
            printf("[%s]\n", l->nome);
            l = l->prox;
        }

    }
    //--------------------------------------------------------------------------

    list* busca(list *l, char info[]) {
        while (l != NULL && strcmp(info, l->nome) != 0) {
            l = l->prox;
        }
        return l;
    }
    //--------------------------------------------------------------------------

    list* getFim(list *l) {
        while (l->prox != NULL)
            l = l->prox;
        return l;
    }
    //--------------------------------------------------------------------------

    void exclui(list **l, char nome[]) {
        list *aux = busca(*l, nome);
        if ((*l)->prox == NULL) {
            *l = NULL;
            free(aux);
        } else if (aux->ant == NULL) {
            *l = (*l)->prox;
            free(aux);
        } else if (aux->prox == NULL) {
            aux->ant->prox = NULL;
            aux->ant = NULL;
            free(aux);

        } else {
            aux->ant->prox = aux->prox;
            aux->prox->ant = aux->ant;
            free(aux);
        }
    }
    //--------------------------------------------------------------------------

    void selecaoDireta(list **l) {
        char menor[40];
        list *i = *l, *j = NULL;
        while (i->prox != NULL) {
            strcpy(menor, i->nome);
            j = i->prox;
            while (j != NULL) {
                if (strcmp(j->nome, menor) < 0) {
                    strcpy(menor, j->nome);
                    strcpy(j->nome, i->nome);
                    strcpy(i->nome, menor);
                }
                j = j->prox;
            }
            i = i->prox;
        }
    }

    //--------------------------------------------------------------------------

#ifdef __cplusplus
}

User badge image

Andre

Há mais de um mês

Para responder essa questão devemos aplicar nosso conhecimento sobre estrutura de dados.


#include <iostream>

#include <deque>

using namespace std;

int main(int argc, char *argv[]){

deque<int> fila;

cout << "Antes de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos ao final da fila

fila.push_back(10);

fila.push_back(20);

// inserir elemento no início da fila

fila.push_front(30);

// fila: 30 10 20

cout << "\nDepois de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

cout << "\nMostrando os elementos da fila: ";

deque<int>::iterator it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n";

// limpar toda a fila

fila.clear();

cout << "\nDepois de limpar (clear) a fila: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos na frente

fila.push_front(10);

fila.push_front(20);

fila.push_back(30);

// fila: 20 10 30

// removendo o segundo elemento

fila.erase(fila.begin() + 1);

cout << "\nMostrando os elementos da fila: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n\nElemento da frente: " << fila.front();

cout << "\n\nUltimo elemento: " << fila.back();

it = fila.begin() + 1;

fila.insert(it, 10);

cout << "\n\nMostrando os elementos: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

// remover do início

fila.pop_front();

// remover do final

fila.pop_back();

cout << "\n\nTamanho da fila: " << fila.size() << endl;

return 0;

}


Portanto acima se encontra o exemplo clássico do uso de um deque. Nele podemos ver a inserção e remoção dos elementos no início e no final. É possível também consultar se a lista está vazia ou cheia.

User badge image

Andre

Há mais de um mês

Para responder essa questão devemos aplicar nosso conhecimento sobre estrutura de dados.


#include <iostream>

#include <deque>

using namespace std;

int main(int argc, char *argv[]){

deque<int> fila;

cout << "Antes de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos ao final da fila

fila.push_back(10);

fila.push_back(20);

// inserir elemento no início da fila

fila.push_front(30);

// fila: 30 10 20

cout << "\nDepois de inserir os elementos: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

cout << "\nMostrando os elementos da fila: ";

deque<int>::iterator it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n";

// limpar toda a fila

fila.clear();

cout << "\nDepois de limpar (clear) a fila: ";

if(fila.empty())

cout << "Fila vazia!!\n";

else

cout << "Fila NAO vazia!!\n";

// inserir elementos na frente

fila.push_front(10);

fila.push_front(20);

fila.push_back(30);

// fila: 20 10 30

// removendo o segundo elemento

fila.erase(fila.begin() + 1);

cout << "\nMostrando os elementos da fila: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

cout << "\n\nElemento da frente: " << fila.front();

cout << "\n\nUltimo elemento: " << fila.back();

it = fila.begin() + 1;

fila.insert(it, 10);

cout << "\n\nMostrando os elementos: ";

it = fila.begin();

while(it != fila.end())

cout << *it++ << " ";

// remover do início

fila.pop_front();

// remover do final

fila.pop_back();

cout << "\n\nTamanho da fila: " << fila.size() << endl;

return 0;

}


Portanto acima se encontra o exemplo clássico do uso de um deque. Nele podemos ver a inserção e remoção dos elementos no início e no final. É possível também consultar se a lista está vazia ou cheia.

Essa pergunta já foi respondida por um dos nossos especialistas