关于c++Primer书上4.15栈类实例的问题.doc
答案:1 悬赏:20 手机版
解决时间 2021-01-17 00:41
- 提问者网友:我是女神我骄傲
- 2021-01-16 20:55
关于c++Primer书上4.15栈类实例的问题.doc
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2021-01-16 21:59
我学的是第四版,我帮你把程序做了一下调试,现在你可以拷贝到你的便一起上运行了,如果还有问题再来讨论哦,我的百度Hi经常在线的
//
#ifndef ISTACK_H
#define ISTACK_H//头文件保护符是必要有的
//#include "stdafx.h" 不知道这个头文件是做什么的
#include
#include//有cout cin要有iostream头文件
//using std::vector; //头文件中不能using声明,否则使用这一头文件的CPP中会重复声明
//using std::cout;
//using std::endl;
class iStack
{
public:
iStack(int capacity):_stack(capacity),_top(0) {}
bool pop(int &value);
bool push(int value);
inline bool full()
{return _top?false:true;} //这一句,由于_top被初始为0了,full()不就永远返回true了吗?
inline bool empty()
{return _top void display();
inline int iStack::size(){return _top;};
private:
int _top;
std::vector _stack;
};
bool iStack::pop(int &top_value)
{
if(empty())//是不是empty()应该返回真,if返回false,下面的语句执行不到?
return false;
top_value=_stack[--_top];
std::cout<<"iStack::pop():"< return true;
}
bool iStack::push(int value)
{
//
#ifndef ISTACK_H
#define ISTACK_H//头文件保护符是必要有的
//#include "stdafx.h" 不知道这个头文件是做什么的
#include
#include
//using std::vector; //头文件中不能using声明,否则使用这一头文件的CPP中会重复声明
//using std::cout;
//using std::endl;
class iStack
{
public:
iStack(int capacity):_stack(capacity),_top(0) {}
bool pop(int &value);
bool push(int value);
inline bool full()
{return _top?false:true;} //这一句,由于_top被初始为0了,full()不就永远返回true了吗?
inline bool empty()
{return _top
inline int iStack::size(){return _top;};
private:
int _top;
std::vector
};
bool iStack::pop(int &top_value)
{
if(empty())//是不是empty()应该返回真,if返回false,下面的语句执行不到?
return false;
top_value=_stack[--_top];
std::cout<<"iStack::pop():"<
}
bool iStack::push(int value)
{
std::cout<<"iStack::push("<
return false;
_stack[_top++]=value;//由于_top被初始为0,上面的if永远为真,直接return了,下面这些语句就执行不了了
return true;
}
void iStack::display()
{
if(!size())
{
std::cout<<"(0)
"; return ;
}
std::cout<<"("<
std::cout<<_stack[ix]<<" ";
std::cout<<":top)
"; }
#endif
//
#include
#include "iStack.h"
using std::cout;
using std::endl;
int main()
{
iStack stack(32);
stack.display();
for(int ix=1;ix<51;++ix)
{
if(ix%2==0)
stack.push(ix);
if(ix%5==0)
stack.display();
if(ix%10==0)
{
int dummy;
stack.pop(dummy);stack.pop(dummy);
stack.display();
}
}
return 0;
}
//运行结果如下图
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯