Buscar

crie um program que demonstre o uso de uma estrutura de dados do tipo fila de inteiros que use como elemen

Utilizando a linguagem de programação C/C++ crie um program que demonstre o uso de uma estrutura de dados do tipo fila de inteiros que use como elemento de armazenamento uma estrutura do tiplo lista encadeada. Certifique-se que sua estrutura de fila tenha funções para inserir, apagar, criar e mostrar o conteúdo da lista além de uma função para devolver o tamanho da fila e outra para esvaziar a fila. Observe também que, para resolver este problema você precisará, obrigatoriamente utilizar alocação dinâmica de memória e que para testar a fila o usuário deve ter acesso a um menu contendo todas as funções especificadas. Alguem sabe essa?

💡 7 Respostas

User badge image

Joao Andre MArtins Dias

TADFila.h

#include<stdlib.h>

struct No {
        int info;
        struct No *prox;
    };
    typedef struct No No;
    //--------------------------------------------------------------------------
    void init(No **fila); //Inicializa a fila
    void enqueue(No **fila, int info);//Insere no fim na fila
    void deenqueue(No **fila, int *info);//Retira o da fila (FIFO)
    void show(No *fila);//Exibe a fila
    char isEmpty(No *fila);//Verifica se a fila esta vazia
    int lenght(No *fila);// retorna o tamanho da fila
    void clearQueue(No **queue);//zera a fila
    void killNode(No **fila, int info);//Exclui um no da fila;
    //--------------------------------------------------------------------------
    void init(No **fila){
        *fila=NULL;
    }
    /*------------------------------------------------------------------------*/
    void enqueue(No **fila, int info){
        No *nova=(No*)malloc(sizeof(No));
        No *aux;
        nova->info=info;
        nova->prox=NULL;
        
        if(*fila==NULL){
            *fila=nova;
        }else{
           aux=*fila;
            while(aux->prox!=NULL){
                aux=aux->prox;
            }
            aux->prox=nova;
        }
    }
    /*------------------------------------------------------------------------*/
    void deenqueue(No **fila, int *info){
        No *aux;
        if(*fila!=NULL){    
            aux=*fila;
            *info=(*fila)->info;
            *fila=(*fila)->prox;
            free(aux);
        }
    }
    /*------------------------------------------------------------------------*/
    char isEmpty(No *fila){
        return(fila==NULL);
    }
    /*------------------------------------------------------------------------*/
    void list(No *fila){
        while(fila!=NULL){
            printf("[%d]",fila->info);
            fila=fila->prox;
        }
    }
    /*------------------------------------------------------------------------*/
    int lenght(No *fila){
        int cont=0;
        while(fila!=NULL){
            cont++;
            fila=fila->prox;
        }
        return cont;
    }
    void clearQueue(No **queue){
        No *aux;
        while(*queue!=NULL){
            aux=*queue;
            *queue=(*queue)->prox;
            free(aux);
        }
    }
   /*------------------------------------------------------------------------*/
    void killNode(No **fila, int info){
        No *aux=*fila,*ant;
        while(aux!=NULL && aux->info!=info){
            ant=aux;
            aux=aux->prox;
        }
        if(aux!=NULL){
            ant->prox=aux->prox;
            free(aux);
        }
    }

4
Dislike0
User badge image

Joao Andre MArtins Dias

Arquivo principal:

#include"TADFila.h"


/*
 *  
 */

/*---------------------------------------------------------------------------*/
int main() {
    char menu[7][28];
    int op, aux;
    No *fila;
    init(&fila);
    strcpy(menu[0], "[1] Inserir elementos na fila\n");
    strcpy(menu[1], "[2] Retirar elementos da fila\n");
    strcpy(menu[2], "[3] Exibir elementos da fila\n");
    strcpy(menu[3], "[4] Exibir tamanho da fila\n");
    strcpy(menu[4], "[5] Destruir a fila\n");
    strcpy(menu[5], "[6] tabela AscII\n");
    strcpy(menu[6], "[7] Sair\n");
    do {
        for (int i = 0; i < 7; i++)
            printf(menu[i]);

        scanf("%d", &op);
        switch (op) {
            case 1:
                for (int i = 0; i < 30; i++)
                    enqueue(&fila, i);
                printf("Total elementos na fila [%d]\n", lenght(fila));
                scanf("%d", &aux);
                break;
            case 2:
                deenqueue(&fila, &aux);
                printf("Elemento retirado [%d]\n", aux);
                printf("Total elementos restantes [%d]\n", lenght(fila));
                scanf("%d", &aux);
                break;
            case 3:
                list(fila);
                scanf("%d", &aux);
                break;
            case 4:
                printf("Total elementos restantes [%d]\n", lenght(fila));
                scanf("%d", &aux);

                break;

            case 5:
                while (!isEmpty(fila)) {
                    deenqueue(&fila, &aux);
                }
                printf("Total elementos restantes [%d]\n", lenght(fila));
                scanf("%d", &aux);

                break;
            case 6:
                for(char i=0;i<256;i++){
                    printf("%d - [%c]",i,i);
                       
                }
                scanf("%d",&aux);
                break;
        }
    } while (op != 6);
}

3
Dislike0
User badge image

Carlota Bomfim

Bom dia!

O programa está em duas partes?

2
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais

Outros materiais