为什么会输出一些莫名的数字

zjt88661199 2010-06-06 10:15:49
下边是一个stack类,可是输出结果和书上有出入,本来结果应该是“9,8。。。。2,1”
可是我的结果是 “4676004 9 8 。。。21”,为什么啊?

#include<iostream>
using namespace std;
class stackofintegers
{
public:
stackofintegers()
{
size=0;
}
bool isempty()
{
return(size==0);
}
int peek()
{
return elements[size - 1];
}
void push(int value)
{
elements[size++]=value;
}
int pop()
{
return elements[size--];
}
int getsize()
{
return size;
}

private:

int elements[100];
int size;
};

int main()
{
stackofintegers stack;

for (int i = 0;i<10; i++)
stack.push(i);

while (!stack.isempty())
cout<< stack.pop()<<"";

return 0;

}
...全文
114 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjt88661199 2010-06-06
  • 打赏
  • 举报
回复
晕,彻底晕死,写错了。看清楚。
cs_yagami 2010-06-06
  • 打赏
  • 举报
回复
 
int pop()
{
return elements[--size];
}

這個也有問題,當size < 0時就不該pop了

int pop()
{
if (size < 0)
return 0; // 或是其他你想返回的東西
else
return elements[--size];
}
z569362161 2010-06-06
  • 打赏
  • 举报
回复
“4676004 9 8 。。。21”,只要看到这个就应该知道原因了。

越界,没有定义。
huanmie_09 2010-06-06
  • 打赏
  • 举报
回复
pop函数写得有问题:
int pop()
{
//return elements[size--]; //size应该先自减,然后取返回下标自减后的元素.
return elements[--size];
}
mstlq 2010-06-06
  • 打赏
  • 举报
回复
/*这是注释*/

不再解释……
zjt88661199 2010-06-06
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
class stackofintegers
{
public:
stackofintegers() {
size = 0;
}
bool isempty() {
return(size == 0);
}
int peek() {
return elements[size - 1];
}
void push(int value) {
elements[size++] = value;
}
int pop() {
return elements[--size/*--*/];、、加“*--* 什么意思啊,是不是要去掉什么东西啊”
}
int getsize() {
return size;
}

private:

int elements[100];
int size;
};

int main()
{
stackofintegers stack;

for (int i = 0; i < 10; i++)
stack.push(i);

while (!stack.isempty())
cout << stack.pop() << "";

return 0;

}
-----------------------
为什么加那东西啊,解释下啊,我新手不太懂,应该是去掉数组中的空的什么东西吗?
mstlq 2010-06-06
  • 打赏
  • 举报
回复
请自行对比

#include<iostream>
using namespace std;
class stackofintegers
{
public:
stackofintegers() {
size = 0;
}
bool isempty() {
return(size == 0);
}
int peek() {
return elements[size - 1];
}
void push(int value) {
elements[size++] = value;
}
int pop() {
return elements[--size/*--*/];
}
int getsize() {
return size;
}

private:

int elements[100];
int size;
};

int main()
{
stackofintegers stack;

for (int i = 0; i < 10; i++)
stack.push(i);

while (!stack.isempty())
cout << stack.pop() << "";

return 0;

}

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧