===Headfile=== // // Created by Alexander Dietrich on 09.03.2017. // #ifndef POSTFIX_STACK_H #define POSTFIX_STACK_H #include class Node{ public: Node* getNext(){ return next; } int getValue(){ return value; } void setNext(Node* nextNext){ next = nextNext; } void setValue(int number){ value = number; } private: Node *next; int value; }; class Stack{ public: Stack(); //constructor ~Stack(); //destructor void push(int value); int pop(); private: Node *first; }; #endif //POSTFIX_STACK_H ======stack.cpp====== // // Created by Alexander Dietrich on 09.03.2017. // #include "stack.h" Stack::Stack() { // stack wird auf auf null gesetzt first = nullptr; } Stack::~Stack() { // destructor -> stack wird wieder gelöscht (allocated mem freigegeben) Node* current = first; while(current != nullptr){ Node* tempNext = current->getNext(); delete current; current = tempNext; } } void Stack::push(int value) { // nächste Eingabe wird auf den Stack gelagert if(first == nullptr){ first = new Node(); first->setValue(value); first->setNext(nullptr); }else{ Node *tmp = new Node(); tmp->setNext(first); tmp->setValue(value); first = tmp; } } int Stack::pop() { // die zuletzt eingegebene Zahl wir zurückgegeben vom Stack int toReturn = first->getValue(); Node *next = first->getNext(); delete first; first = next; return toReturn; } ==============main.c============== #include #include #include #include #include "stack.h" using namespace std; int main() { int number1 = 0, number2 = 0, end = 1; Stack* liste = new Stack(); while(end == 1) { std::string eingabe = ""; std::cin >> eingabe; if (eingabe.compare("-") == 0) { number2 = liste->pop(); number1 = liste->pop(); liste->push(number1 - number2); } else if (eingabe.compare("+") == 0) { number2 = liste->pop(); number1 = liste->pop(); liste->push(number1 + number2); } else if (eingabe.compare("/") == 0) { number2 = liste->pop(); number1 = liste->pop(); liste->push(number1 / number2); } else if (eingabe.compare("%") == 0) { number2 = liste->pop(); number1 = liste->pop(); liste->push(number1 % number2); } else if (eingabe.compare("*") == 0) { number2 = liste->pop(); number1 = liste->pop(); liste->push(number1 * number2); } else if (eingabe.compare("=") == 0) { number1 = liste->pop(); cout << number1 << endl; end = 0; } else { std::stringstream s(eingabe); s >> number1; liste->push(number1); } } delete liste; return 0; }