Guest User

Untitled

a guest
Dec 7th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  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. }
Add Comment
Please, Sign In to add comment