How to create FILA by passing a STRUCT

0

I'm trying to create a code in which I'll enter 10 candidate names in a queue using a C structure. But I do not have much knowledge in C data structure.

I did this:

#define TAM 5

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>


    typedef struct
    {

        int final;
        int inicio;
        int tamanho;   
        int contador;

        char *vetorFila[TAM];

    }  pretendentes;


    void ListarNomesDosPretendentes();
    void removerNomesDosPretendentes();
    void receberNomesDosPretendentes();
    void armazenarNomesDosPretendentes();


    int main(void)
    {
        setlocale(LC_ALL, "");        


        int menu = 0;
        int operacao = 0;


            do
            {
                printf("1 - Inserir nome\n");
                printf("2 - Remover nome\n");
                printf("3 - Exibir fila\n");
                scanf("%i", &menu);

            } while(menu < 0 && menu > 3);


            switch (operacao)
            {
                case 1:
                {
                    receberNomesDosPretendentes();
                }
                case 2:
                {
                    removerNomesDosPretendentes();
                }
                case 3:
                {
                    ListarNomesDosPretendentes();
                }
            }

        return 0;
    }



    void receberNomesDosPretendentes()
    {
        static char nomes[10], *ptr;

        printf("Digite o nome ou aperte ENTER para sair.");
        do
        {
            printf("\n\nDigite o nome do pretendente: ");
            gets(nomes);

            ptr = (char*) malloc(strlen(nomes));
            strcpy(ptr, nomes);

            armazenarNomesDosPretendentes(ptr);

        } while(*nomes);
    }



    void armazenarNomesDosPretendentes(pretendentes *Pretendente, char *ptr)
    {
        if(Pretendente -> inicio == TAM)
        {
            printf("A fila está cheia.");
            return 0;
        }

        Pretendente -> vetorFila[Pretendente->inicio] = ptr;
        Pretendente -> inicio++;

    }

    void removerNomesDosPretendentes(pretendentes *Pretendente)
    {
        if(Pretendente -> inicio == Pretendente -> final)
        {
            printf("A fila está vazia.");
            return 0;
        }

        Pretendente -> final--;

    }

    void ListarNomesDosPretendentes(pretendentes *Pretendente)
    {
        int i;

        for(i = Pretendente -> final; i < TAM; i++)
        {
            printf("Pretendente %d: %s", i+1, Pretendente -> vetorFila[i]);
        }
    }

But as soon as squeeze is giving an error, does anyone help me to identify the error? It runs though soon break ...

    
asked by anonymous 18.04.2018 / 18:43

0 answers