c++ - 堆栈输出错误
问题描述
输出是:100 100
应该是:9 100
我已经调用了两次push。当我调用print时,输出错误。
int main(){
int i=9;
Stackc s;
s.push(i);
i=100;
s.push(i);
s.print();
return 0;
}
这是.h文件
class Stackc{
int arr[100];
int iTop;
public:
int top();
void push(int i);
void pop();
void print();
Stackc();
};
这是构造函数
Stackc::Stackc(){
iTop=-1;
for(int i=0;i<100;i++)
arr[i]=0;
}
此函数将一个元素压入堆栈
void Stackc::push(int i){
iTop++;
arr[iTop]=i;
}
这是用于打印堆栈
void Stackc::print(){
for(int i=0;i<=iTop;i++)
cout<<arr[iTop]<<" ";
cout<<endl;
}
解决方案
这一行:
cout << arr[iTop] << " ";
应该
cout << arr[i] << " ";
对于未来,我建议您看看如何创建一个最小的、可重现的示例。例如,一个最小的示例不需要跨越多个文件(除非问题是关于如何处理多个文件)。理想情况下,只需复制/粘贴一段代码即可运行代码,如下所示:
class Stackc {
int arr[100];
int iTop;
public:
Stackc() {
iTop = -1;
for (int i = 0; i < 100; i++)
arr[i] = 0;
}
void push(int i) {
iTop++;
arr[iTop] = i;
}
void print() {
for (int i = 0; i <= iTop; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
}
};
int main() {
int i = 9;
Stackc s;
s.push(i);
i = 100;
s.push(i);
s.print();
return 0;
}
我还推荐以下问答:
推荐阅读
- java - Java.security - 如何将 KeyPair 密钥存储在字符串中。我收到无效的 DER 编码异常
- android - 如何在 FrameLayout 中将元素放置在彼此下方?
- r - 我想创建一个可以触发以填充 for 循环结果的反应数据框
- python - 加密/解密字符串索引必须是整数
- javascript - 查询 JavaScript 对象
- reactjs - 即使存在键,仍然会收到“映射项应该有键”警告
- ios - 绘制带有一些阴影偏移的圆边平行四边形
- php - PHP 表单清单显示“For:”标签而不是“Value:”
- android - android测试找不到符号方法natural()
- r - R - 将一个值拆分为每一层内的数量