Помогите, пожалуйста, очень срочно, программа на C
Есть программный код стекового калькулятора.
Помогите реализовать его со связным списком: #include <stdio.h> #include <malloc.h> #include <math.h> int sp = 0; int stack[1000]; int pop(void) { if (sp > 0) { return stack[--sp]; } else { fprintf(stderr, "Pusto\n"); return 0; } }; void push(int a) { stack[sp++] = a; }; int empty() { return (sp == 0); } int main(int argc, char* argv[]) { FILE *stream=NULL; if (argc == 2) stream=fopen(argv[1],"w"); while (!feof(stdin)) { int c = getchar(); if(stream != NULL){ fprintf(stream,"%c", c); }; int x; switch (c) { case '\n': case ' ' : break; case '.' : x=pop(); if(stream != NULL){ fprintf(stream,"Result = %d\n", x); }; printf("Result = %d\n", x); break; case '+': stack[sp-2] = stack[sp-2] + stack[sp-1]; sp--; break; case '-': stack[sp-2] = stack[sp-2] - stack[sp-1]; sp--; break; case '*': c = getchar(); if(c != '*'){ ungetc(c,stdin); stack[sp-2] = stack[sp-1] * stack[sp-2]; } else{ if(stream != NULL) fprintf(stream,"%c", c); stack[sp-2] = pow(stack[sp-2], stack[sp-1]); }; sp--; break; case '/': stack[sp-2] = stack[sp-2] / stack[sp-1]; sp--; break; default: ungetc(c, stdin); if (scanf("%d", &x) != 1) { fprintf(stderr, "Can't read integer\n"); return -1; } else { push(x); } break; } } fclose(stream); return 0; } |
Часовой пояс GMT +4, время: 12:59. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.