#include<iostream> #include<stack> #include<string.h> using namespace std; stack<int> stk; char temp[1005] = {}; int A() { int sum = 0; for (int i = 0; i < strlen(temp); ++i) { if (temp[i] == '&') break; sum = sum * 10 + temp[i] - '0'; temp[i] = '&'; } return sum; } int main() { int tmp = 0; char fuhao; int a1, a2; int idx = 0; while (fuhao != '@') { cin >> fuhao; if (fuhao >= '0' && fuhao <= '9') { temp[idx] = fuhao; idx++; } if (fuhao == '.') { idx = 0; tmp = A(); stk.push(tmp); } if (fuhao == '+') { a1 = stk.top(); stk.pop(); a2 = stk.top(); stk.pop(); stk.push(a1 + a2); } if (fuhao == '-') { a1 = stk.top(); stk.pop(); a2 = stk.top(); stk.pop(); stk.push(a2 - a1); } if (fuhao == '*') { a1 = stk.top(); stk.pop(); a2 = stk.top(); stk.pop(); stk.push(a1 * a2); } if (fuhao == '/') { a1 = stk.top(); stk.pop(); a2 = stk.top(); stk.pop(); stk.push(a2 / a1); } } cout << stk.top() << endl; return 0; }不用STL容器实现这个代码
时间: 2024-01-19 10:03:02 浏览: 168
#include"iostream.h"
3星 · 编辑精心推荐
好的,这是一个使用栈来实现四则运算的代码,现在我来给你演示如何不使用STL容器来实现这个代码。
首先,我们需要手动实现一个栈。可以使用数组来模拟栈的存储,用一个指针来指向栈顶。具体实现如下:
```c++
const int MAXN = 1005; // 栈的最大大小
int stk[MAXN]; // 栈的存储数组
int top = -1; // 栈顶指针,初值为-1
// 入栈操作
void push(int x) {
top++;
stk[top] = x;
}
// 出栈操作
void pop() {
top--;
}
// 获取栈顶元素
int getTop() {
return stk[top];
}
// 判断栈是否为空
bool isEmpty() {
return top == -1;
}
```
接下来,我们需要修改原始代码中使用STL容器的部分。具体来说,就是将`stack<int> stk`改为`int stk[MAXN]`,然后使用我们手动实现的栈操作来替换STL容器的操作。
```c++
const int MAXN = 1005; // 栈的最大大小
int stk[MAXN]; // 栈的存储数组
int top = -1; // 栈顶指针,初值为-1
char temp[1005] = {};
int A() {
int sum = 0;
for (int i = 0; i < strlen(temp); ++i) {
if (temp[i] == '&') break;
sum = sum * 10 + temp[i] - '0';
temp[i] = '&';
}
return sum;
}
int main() {
int tmp = 0;
char fuhao;
int a1, a2;
int idx = 0;
while (fuhao != '@') {
cin >> fuhao;
if (fuhao >= '0' && fuhao <= '9') {
temp[idx] = fuhao;
idx++;
}
if (fuhao == '.') {
idx = 0;
tmp = A();
push(tmp);
}
if (fuhao == '+') {
a1 = getTop();
pop();
a2 = getTop();
pop();
push(a1 + a2);
}
if (fuhao == '-') {
a1 = getTop();
pop();
a2 = getTop();
pop();
push(a2 - a1);
}
if (fuhao == '*') {
a1 = getTop();
pop();
a2 = getTop();
pop();
push(a1 * a2);
}
if (fuhao == '/') {
a1 = getTop();
pop();
a2 = getTop();
pop();
push(a2 / a1);
}
}
cout << getTop() << endl;
return 0;
}
```
这样,我们就成功地将使用STL容器的代码转化为不使用STL容器的代码了。
阅读全文