Для реализации стековой структуры данных в C++. Это может быть достигнуто с помощью стандартной библиотеки шаблонов C++ (STL) или с помощью пользовательского класса.
У меня нет выхода, и мне также не хватает существенной логики.
Что я уже пробовал:
// Required headers // main.cpp // Program Purpose: Implementing a stack structure in C++. #include <iostream> #include <string.h> #include <bits/stdc++.h> using namespace std; int main() { // Create a stack of capacity equal to expression size stack <float> s; cout << "Please enter an expression in Post-fix notation" << endl; string exp; float val1, val2; // set status = false when division by zero bool status = true; // read each operand / operator while (cin >> exp) { // If the character is a number, push to stack try { s.push(stof(exp)); // operator ==> pop values from stack and do operation } catch(...) { if (!s.empty()) { val1 = s.top(); s.pop(); } if (!s.empty()) { val2 = s.top(); s.pop(); } else { // stack is empty status = false; } // do only if status == true if (status) { // arithmetic operation if (exp == "+") { s.push(val2 + val1); } else if(exp == "-") { s.push(val2 - val1); } else if(exp == "*") { s.push(val2 * val1); } else if(exp == "/") { if (val1 == 0) { status = false; } else { s.push(val2 / val1); } } } } } if (status) { // final answer is the element present on the stack cout<<"Result: "<< s.top(); } else { cout << "error: division by zero" << endl; } return 0; }
Shao Voon Wong
Для цели вашей тренировки, вы можете использовать std::vector для реализации вашего стека. СТД::вектор-это динамический массив, который может расширяться и сжиматься. STL уже имеет реализацию стека, которую вы можете использовать.