Advertisement
lidia_defreitas

Exemplo Pilha

Jul 7th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.41 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <locale.h>
  5.  
  6. //  Fun??o que retorna 1 em caso de Pilha Cheia e 0 em caso de inclus?o Ok                  
  7. int inclui(int *p_ultimo, int p_Pilha[10], int p_valor);  // p_ultimo - par?metro que define a posi??o do ?ltima elemento da Pilha (primeira vaga)
  8.                                                          //            esse valor ? passado por refer?ncia pois o mesmo ? alterado com a inclu?o de um elemento            
  9.  
  10.                                                          // p_Pilha   - Pilha na qual o conte?do (p_valor) ser? inclu?do
  11.                                                          //            esse valor ? passado por refer?ncia pois o mesmo ? alterado              
  12.  
  13.                                                          // p_valor  - valor a ser inserido na Pilha
  14.  
  15.  
  16. // Fun??o que mostra os elementos da Pilha
  17. void mostra(int p_ultimo, int p_Pilha[10]);              // p_ultimo - par?metro que define a ?ltima posi??o elemento da Pilha (primeira vaga)
  18.  
  19.  
  20. //  Fun??o que retorna o Primeiro elemento da Pilha, caso exista OU - caso a lista esteja VAZIA                  
  21. int exclui(int *p_ultimo, int p_Pilha[10]);              // p_ultimo - par?metro que define a ?ltima posi??o elemento da Pilha (primeira vaga)
  22.                                                         //            esse valor ? passado por refer?ncia pois o mesmo ? alterado com a retirada do elemento              
  23.  
  24.                                                         // p_Pilha   - Pilha na qual o conte?do (p_valor) ser? inclu?do
  25.  
  26.  
  27.  
  28. int main() {
  29.  
  30.    int Pilha[10];
  31.    int op;        // Op??o do par?metro
  32.    int valor;     // Valor a ser inclu?do / retirado da Pilha. Se valor = -1, significa Pilha vazia  
  33.    int ultimo;   // Vari?vel que define a ?ltima posi??o da Pilha (primeira vaga)  
  34.    int res;      // Recebe o retorno do resultado das fun??es inclui
  35.                  // fun??o inclui 1 - Pilha Cheia    0 - Inclus?o OK
  36.  
  37.    setlocale(LC_ALL," ");
  38.  
  39.    printf("----------------------------------\n");
  40.    printf("1 - Incluir\n");
  41.    printf("2 - Retirar\n");  
  42.    printf("3 - Listar \n");      
  43.    printf("4 - Sair \n");        
  44.    printf("----------------------------------\n");  
  45.    
  46.    printf("Informe uma op??o para Pilha: ");
  47.    scanf("%d", &op);
  48.    
  49.    ultimo = 0;   // Pilha VAZIA  
  50.    
  51.    while (op != 4) {
  52.          
  53.       switch (op) {
  54.      
  55.          case 1:  // Inclui
  56.  
  57.             printf("Informe o valor a ser incluido na Pilha: ");
  58.             scanf("%d", &valor);
  59.            
  60.             res = inclui(&ultimo, Pilha, valor);
  61.            
  62.             if (res == 1) {  // Se retornar 1, Pilha Cheia
  63.                printf("Pilha CHEIA");
  64.             }
  65.             else {
  66.                printf("Valor %d incluido na Pilha \n", valor);
  67.             }
  68.             break;
  69.          
  70.          case 2: // Exclui
  71.             valor = exclui(&ultimo, Pilha);
  72.             if (valor == -1){                // Se retornar -1, Pilha Vazia
  73.                printf("Lista Vazia");
  74.             }
  75.             else{
  76.                printf ("O elemento retirado da Pilha foi o %d\n", valor);
  77.             }                          
  78.             break;
  79.  
  80.          case 3:  // Mostra
  81.             mostra(ultimo, Pilha);
  82.             break;
  83.  
  84.          default:
  85.             printf("INVALIDO \n");
  86.  
  87.      }
  88.  
  89.       printf("\n\n----------------------------------\n");
  90.       printf("1 - Incluir\n");
  91.       printf("2 - Retirar\n");  
  92.       printf("3 - Listar \n");      
  93.       printf("4 - Sair \n");        
  94.       printf("----------------------------------\n");  
  95.    
  96.       printf("Informe uma op??o para Pilha: ");
  97.       scanf("%d", &op);
  98.  
  99.          
  100.    }
  101.    
  102.    system("pause");
  103.    
  104.    return 0;
  105. }
  106.  
  107. int inclui(int *p_ultimo, int p_Pilha[10], int p_valor){  
  108.        
  109.     if (*p_ultimo == 10) {
  110.        return 1;
  111.     }
  112.     else {
  113.        p_Pilha[*p_ultimo] = p_valor;
  114.        *p_ultimo = *p_ultimo + 1;
  115.        return 0;
  116.     }
  117. }
  118.  
  119.  
  120. void mostra(int p_ultimo, int p_Pilha[10]){
  121.    int i;
  122.    
  123.    for(i = 0; i < p_ultimo; i++){
  124.       printf("|  %d  ", p_Pilha[i]);
  125.    }
  126. }
  127.  
  128.  
  129. int exclui(int *p_ultimo, int p_Pilha[10]){  
  130.    
  131.     int ultimo = p_Pilha[*p_ultimo - 1];    
  132.    
  133.     if (ultimo == 0) {
  134.        return -1;
  135.     }
  136.     else {      
  137.        p_Pilha[*p_ultimo - 1] = 0;
  138.              
  139.        return ultimo;
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement