Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda em exercicio de estrutura de dados


jobis

Pergunta

Boa tarde!

Gostaria de uma ajuda em um exercício que estou fazendo. Vou disponibilizar o exercício, e o código que já fiz.

Preciso de ajuda pois o exercício precisa ser entregue ainda hoje 31/05/19 e já tentei de tudo quanto é forma resolver.

 

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

#include <string.h>
#include <tchar.h>
#include <locale.h>

//Constante que define o tamanho máximo da estrutura de dados
#define tamanho 3

typedef struct tipo_proc{
    char nome[10];
    int PID  ;
}tipo_proc;

tipo_proc proc;
//Declaração do tipo_pilha: estrutura de dados
typedef struct tipo_pilha {
    tipo_proc dados[tamanho];
    int ini;
    int topo;
}tipo_pilha;

//Criando uma variável tipo_pilha
tipo_pilha pilha;


//Função que empilha um novo elemento no topo
void empilha(tipo_proc elemento) {
    //Verificando se existe alguma posição disponível para uma inserção
    if(pilha.topo == tamanho) {
        //Se a pilha estiver cheia, não é possível empilhar
        printf("Pilha cheia.\n");
        system("pause");
    }
    else
    {
        //Se a pilha não estiver cheia:
        //    Adicione o novo elemento no topo
        //    Incremente o topo
        pilha.dados[pilha.topo] = elemento;
        pilha.topo++;
        proc.PID++;
    }
}

/*
Função que desempilha e retorna o elemento do topo
*/

tipo_proc desempilha(){
    //Variável que guarda um "backup" do elemento desempilhado
    tipo_proc elemento;

    int i;

    //Verificando se existe algum elemento disponível para uma remoção
    if(pilha.topo == 0) {
        //Se a pilha estiver vazia, não será possível desempilhar
        printf("A Pilha está vazia.\n");
        system("pause");
    }
    else
    {
        //Decrementa-se o "topo".
    
        
    
        //Se a pilha não estiver vazia
        //    Guarda um backup do elemento a ser removido;
    
        //'Arrata os elementos do "topo em direção ao "início"
        //Nesse passo, o elemento que estava no "início" da fila será sobrescrito
        for(i=0; i<tamanho; i++)
        
            pilha.dados = pilha.dados[i+1];
      
                pilha.topo--;
                elemento = pilha.dados [pilha.topo];
        //Retorne o elemento que estava no "topo"
    return elemento ;
  
   }
   
       
}

int main() {
    _tsetlocale(LC_ALL,_T("portuguese"));
    
    int i;
    int opcao=0;
    tipo_proc processo;
    tipo_proc backup;
    
    

    pilha.topo=0;
    pilha.ini=0;
    processo.PID =1 ;

    do{

printf("Opcoes:\n");

printf(" 1 - Inserir um elemento novo na pilha\n");
printf(" 2 - Remover um elemento da pilha\n");
printf(" 3 - Esvaziar a pilha\n");
printf(" 0 - Encerrar o programa\n");
printf("     Entre com a sua opcao: ");
scanf("%d", &opcao);   /*Le a opcao do usuario*/


        
switch (opcao)

{
    
    
            
//Inserir um elemento na pilha

    case 1:
                    
    for(i=0;i<=3;i++)
    {
            
    printf("\nPID: %d - Nome: %s",pilha.dados [pilha.topo].PID,pilha.dados [pilha.topo].nome);   
    scanf (" %s", &processo.nome);
    

         empilha(processo);
    
    }
    
        
    /*fflush(stdin);*/
    break;


    case 2:   
    
    
    
    printf("\nRemover um elemento da pilha:\n");

    printf("PID: %d - Nome: %s\n", backup.PID, backup.nome);
    
    backup = desempilha();
     
    fflush(stdin);
    
    break;    

    
    
    case 3:        
    printf("\n Esvaziar a pilha\n");    
    fflush(stdin);    
    
    break;

    }


    }while(opcao!=0);


}

 

Exercício Pilha.png

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...