Jump to content
Fórum Script Brasil
  • 0

Ajuda em exercicio de estrutura de dados


Question

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 to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148724
    • Total Posts
      644560
×
×
  • Create New...