daily pastebin goal
55%
SHARE
TWEET

Untitled

a guest Dec 7th, 2017 47 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Node{
  5.     int value;
  6.     struct Node * prox;
  7. }node;
  8.  
  9. typedef struct{
  10.     node * inicio;
  11.     node * fim;
  12. }lista;
  13.  
  14. node * node_inicia(void);
  15. void lista_insere(lista * l, int value);
  16. int pega_desempilha(lista * l);
  17.  
  18. int main(){
  19.     int i, n;
  20.     char temp[100];
  21.     lista * numeros = (lista*)malloc(sizeof(lista));
  22.  
  23.     scanf("%d", &n);
  24.     for(i=0;i<n;++i){
  25.         scanf("%s", temp);
  26.         int num = atoi(temp);
  27.         if(num == 0){
  28.             int result;
  29.             int n2 = pega_desempilha(numeros);
  30.             int n1 = pega_desempilha(numeros);
  31.             if(temp[0]=='*')result = n1*n2;
  32.             else if(temp[0]=='/') result = n1/n2;
  33.             else if(temp[0]=='+') result = n1+n2;
  34.             else if(temp[0]=='-') result = n1-n2;
  35.             lista_insere(numeros, result);
  36.         }else lista_insere(numeros, num);
  37.     }
  38.     printf("%d\n", numeros->inicio->value);
  39.     return 0;
  40. }
  41.  
  42. node * node_inicia(void){
  43.     node * new = (node*)malloc(sizeof(node));
  44.     new->prox = NULL;
  45.     return new;
  46. }
  47.  
  48. void lista_insere(lista * l, int value){
  49.     node * new = node_inicia();
  50.     new->value = value;
  51.     if(l->inicio == NULL){
  52.         l->inicio = new;
  53.         l->fim = new;
  54.     }else{
  55.         l->fim->prox = new;
  56.         l->fim = new;
  57.     }
  58. }
  59.  
  60. int pega_desempilha(lista * l){
  61.     if(l->inicio == NULL){
  62.         printf("Lista Vazia!\n");
  63.         return -1;
  64.     }
  65.     node*percorre = l->inicio;
  66.     if(l->inicio == l->fim){
  67.         int value = l->inicio->value;
  68.         free(l->inicio);
  69.         return value;
  70.     }
  71.     while(percorre->prox != l->fim) percorre = percorre->prox;
  72.     int value = l->fim->value;
  73.     percorre->prox = l->fim->prox;
  74.     free(l->fim);
  75.     l->fim = percorre;
  76.     return value;
  77. }
RAW Paste Data
Top