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

最低0.47元/天 解锁文章
1469

被折叠的 条评论
为什么被折叠?



