AAugustoMenezes

Pilha

May 4th, 2023 (edited)
823
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.36 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct{
  5.    double valor_carro;
  6. }Valor_carro;
  7.  
  8. typedef struct{
  9.     int ano_Fabricacao;
  10.     char modelo[30];
  11.     char marca[30];
  12.     Valor_carro valor_Carro;
  13. }Info_carro;
  14.  
  15. typedef struct elemento{
  16.     Info_carro info;
  17.     struct elemento *proximo;
  18. }Elemento;
  19.  
  20. Info_carro ler_carro(){
  21.     Info_carro info;
  22.    
  23.     printf("Digite o ano de fabricação do carro: ");
  24.     scanf("%d", &info.ano_Fabricacao);
  25.     printf("Digite o nome do modelo do carro: ");
  26.     scanf("%s", info.modelo);
  27.     printf("Digite a marca do carro: ");
  28.     scanf("%s", info.marca);
  29.     printf("Digite o valor do carro: ");
  30.     scanf("%lf", &info.valor_Carro.valor_carro);
  31.  
  32.     return info;
  33. }
  34.  
  35. void mostrar_Carro(Info_carro info){
  36.     printf("| Ano de fabricação do carro: %d\n", info.ano_Fabricacao);
  37.     printf("|   Esse é o modelo do carro: %s\n", info.modelo);
  38.     printf("|    O carro é da marca: %s\n",info.marca);
  39.     printf("|    O valor do carro é: %f\n", info.valor_Carro.valor_carro);
  40. }
  41.  
  42. Elemento* colocar_Na_Pilha(Elemento *topo){
  43.     Elemento *novo = malloc(sizeof(Elemento));
  44.  
  45.     if(novo != NULL){
  46.         novo->info = ler_carro();
  47.         novo->proximo = topo;
  48.         return novo;
  49.     }
  50.     else
  51.         printf("\nErro: Memória Não Alocada!\n");
  52.     return NULL;
  53. }
  54.  
  55. Elemento* tirar_Da_Pilha(Elemento **topo){
  56.     if(*topo != NULL){
  57.         Elemento *remover = *topo;
  58.         *topo = remover->proximo;
  59.         return remover;        
  60.     }
  61.     else
  62.         printf("\nPilha vazia!\n");
  63.     return NULL;
  64. }
  65.  
  66. void mostrar_Pilha(Elemento *topo){
  67.     printf("\n");    
  68.    
  69.     if(topo == NULL){
  70.             printf("-------------- PILHA VAZIA ---------------\n");
  71.             return NULL;
  72.     }    
  73.    
  74.     printf("|---------- INÍCIO DA PILHA ------------|\n");
  75.         while(topo != NULL){
  76.             printf("\n");
  77.             mostrar_Carro(topo->info);
  78.             printf("\n");
  79.             topo = topo->proximo;
  80.            
  81.         }        
  82.     printf("|------------- FIM PILHA ---------------|\n");
  83.     printf("\n");
  84. }
  85.  
  86. int main(){
  87.  
  88.     Elemento *remover, *topo = NULL;
  89.     int opcao;
  90.  
  91.     do{
  92.         printf("\n");
  93.         printf("|--------- Comandos Para Operar a Pilha: -----------|\n");
  94.         printf("|                                                   |\n");
  95.         printf("|------------------- 1 - Empilhar ------------------|\n");
  96.         printf("|------------------- 2 - Desempilhar ---------------|\n");
  97.         printf("|------------------- 3 - Imprimir ------------------|\n");
  98.         printf("|------------------- 0 - Sair ----------------------|\n");
  99.         printf("\n");
  100.         scanf("%d", &opcao);
  101.         getchar();
  102.  
  103.         switch(opcao){
  104.         case 1:
  105.             topo = colocar_Na_Pilha(topo);
  106.             break;
  107.         case 2:
  108.             remover = tirar_Da_Pilha(&topo);
  109.             if(remover){
  110.                 printf("\nElemento removido com sucesso!\n");
  111.                 mostrar_Carro(remover->info);
  112.  
  113.                 free(remover);
  114.             }
  115.             else
  116.                 printf("\nSem nó a remover.\n");
  117.             break;
  118.         case 3:
  119.             mostrar_Pilha(topo);
  120.             break;
  121.         default:
  122.             if(opcao != 0)
  123.                 printf("\nOpcao invalida!!!\n");
  124.         }
  125.     }while(opcao != 0);
  126.  
  127.     return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment