C++Primer Plus类和对象,抽象数据类型的使用(ADT))

Stock 类非常具体。然而,程序员常常通过定义类来表示更通用的概念。例如,就实现计算机专家们所说的抽象数据类型(abstract datatype,ADT)而言,使用类是一种非常好的方式。顾名思义,ADT 以通用的方式描述数据类型,而没有引入语言或实现细节。例如,通过使用栈,可以以这样的方式存储数据,即总是从堆顶添加或删除数据。例如,C++程序使用栈来管理自动变量。当新的自动变量被生成后,它们被添加到堆顶;消亡时,从栈中删除它们。
下面简要地介绍一下栈的特征。首先,栈存储了多个数据项(该特征使得栈成为一个容器–一种更为通用的抽象);其次,栈由可对它执行的操作来描述。
可创建空栈。
可将数据项添加到堆顶(压入)。
可从栈顶删除数据项(弹出)。
可查看栈否填满。
可查看栈是否为空:
可以将上述描述转换为一个类声明,其中公有成员函数提供了表示栈操作的接口,而私有数据成员负
责存储栈数据。类概念非常适合于ADT方法。私有部分必须表明数据存储的方式。例如,可以使用常规数组、动态分配数组或更高级的数据结构如链表)。然而,公有接口应隐藏数据表示,而以通用的术语来表达,如创建栈、压入等。程序清单10.10演示了一种方法,它假设系统实现了布尔类型。如果您使用的系统没有实现,可以使用int、0和1代替bool、false和true。
本例子中模拟堆栈的后入先出
stack.h

//stack.h -- class definition for the stack ADT
#ifndef STACK_H_
#define STACK_H_

typedef unsigned long Item;
class Stack
{
   
   
public:
	Stack();
	//~Stack();
	bool isempty()const;
	bool isfull()const;
	//push()执行成功返回true,否则false
	bool push(const Item& item);//add item to stack
	//pop()执行成功返回true,否则false
	bool pop(Item& item);//pop top into item
private:
	enum 
	{
   
   
		MAX 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值