C++primer plus第六版课后编程练习答案12.4

#include <iostream>
using namespace std;
typedef unsigned long Item;
class Stack{
private:
	enum{MAX=10};
	Item *pitems;
	int size;
	int top;
public:
	Stack(int n=MAX)
	{
		pitems=new Item[MAX];
		top=0;//从0开始
		size=0;
	}
	Stack(const Stack &st)
	{
		//Stack(st.size);//委托构造,因为长度不同
		//Item *p=pitems;
		pitems=new Item[st.size];
		top=0;//从0开始
		size=0;
		for(int i=0;i<st.size;i++)
		{
		  pitems[i]=st.pitems[i];
		  size++;
		  top++;
		}
		//size=st.size;
		//top=st.top;
	}
	~Stack()
	{
	 delete []pitems;
	}
	bool isEmpty()
	{
		return top==0;
	}
	bool isFull()
	{
		return top==MAX;
	}
	bool push(const Item &it)
	{
		if(isFull())
			cout<<"error! Stack is full!"<<endl;
		else
		{
			pitems[top++]=it;
			size++;
			return true;
		}
		return false;
	}
	bool pop(Item &item)
	{
		if(isEmpty())
		  cout<<"error! Stack is empty!"<<endl;
		else
		{
			item=pitems[top--];
			size--;
			return true;
		}
		return false;
	}
	Stack &operator=(const Stack &st)
	{
		return Stack(st);//委托构造
	}
	friend ostream&operator<<(ostream &os,const Stack &st)//方便检测
	{
		os<<"This Stack is:"<<endl;
		int len=st.top-1;
		while(len!=-1)//从top开始呈现
		{
			cout<<st.pitems[len]<<endl;
			len--;
		}
		//cout<<endl;
		return os;
	}



};;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值