Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct Node{
- int value;
- struct Node * prox;
- }node;
- typedef struct{
- node * inicio;
- node * fim;
- }lista;
- node * node_inicia(void);
- void lista_insere(lista * l, int value);
- int pega_desempilha(lista * l);
- int main(){
- int i, n;
- char temp[100];
- lista * numeros = (lista*)malloc(sizeof(lista));
- scanf("%d", &n);
- for(i=0;i<n;++i){
- scanf("%s", temp);
- int num = atoi(temp);
- if(num == 0){
- int result;
- int n2 = pega_desempilha(numeros);
- int n1 = pega_desempilha(numeros);
- if(temp[0]=='*')result = n1*n2;
- else if(temp[0]=='/') result = n1/n2;
- else if(temp[0]=='+') result = n1+n2;
- else if(temp[0]=='-') result = n1-n2;
- lista_insere(numeros, result);
- }else lista_insere(numeros, num);
- }
- printf("%d\n", numeros->inicio->value);
- return 0;
- }
- node * node_inicia(void){
- node * new = (node*)malloc(sizeof(node));
- new->prox = NULL;
- return new;
- }
- void lista_insere(lista * l, int value){
- node * new = node_inicia();
- new->value = value;
- if(l->inicio == NULL){
- l->inicio = new;
- l->fim = new;
- }else{
- l->fim->prox = new;
- l->fim = new;
- }
- }
- int pega_desempilha(lista * l){
- if(l->inicio == NULL){
- printf("Lista Vazia!\n");
- return -1;
- }
- node*percorre = l->inicio;
- if(l->inicio == l->fim){
- int value = l->inicio->value;
- free(l->inicio);
- return value;
- }
- while(percorre->prox != l->fim) percorre = percorre->prox;
- int value = l->fim->value;
- percorre->prox = l->fim->prox;
- free(l->fim);
- l->fim = percorre;
- return value;
- }
Add Comment
Please, Sign In to add comment