2、自定义一个栈类Stack,能够实现入栈操作push,出栈操作pop,栈是否为空isEmpty,栈是否满isFull入栈时如果栈满了就输出Stack is full并返回false。出栈时如果栈空就输出Stack is empty并返回false。创建栈对象时要给出
正整数n表示栈的容量。主程序中输入正整数n,然后创建容量为n的栈s,然后对栈进行入栈操作,依次入栈11 22 3.3,出栈并输出出栈的值,然后再入栈4.4,输出s[1]的值(即栈中下标为1的值)。然后再出栈4次,每次如果出栈成功就输出出栈的值
输入10输出
3.3
2.2
4.4
2.2
1.1
Stack is empty
#include <iostream>
using namespace std;
class Stack{
private:
int* data_;//存放栈中的数据
int max_size_;//栈最大空间
int top_;//栈顶
//初始化栈
void initStack() {
data_ = new int(max_size_);//分配栈空间
top_ = -1;//初始化栈顶
}
public:
//默认空间为10
Stack() {
max_size_ = 10;
initStack();
}
//设置最大空间
Stack(int max_size) {
max_size_ = max_size;
initStack();
}
~Stack() {
delete data_;
}
//是否栈空
int isEmpty() {
return (top_ == -1)?1:0;
}
//是否栈满
int isFull() {
return (top_ >= max_size_)?1:0;
}
//进栈
int push(int x) {
if(isFull())
return 0;
else
data_[++top_] = x;
return 1;
}
//出栈
int pop(int &x) {
if(isEmpty())
return 0;
else
x = data_[top_--];
return 1;
}
//清除栈
void clear(){
top_ = -1;
}
};
int main(int argc, char const *argv[]) {
int n;
cin>>n;
Stack stack(n);
stack.push(1.1);
stack.push(2.2);
stack.push(3.3);
int a;
stack.pop(a);
cout<<a<<endl;
stack.push(4.4);
stack.pop(a);
stack.pop(a);
cout<<a<<endl;
int r = stack.pop(a);
int count = 0;
while(r != 0)
{
count++;
cout<<a<<endl;
r = stack.pop(a);
}
if(count<4)
cout<<"Stack is empty"<<endl;
return 0;
}