【C++】使用类实现抽象数据类型(Abstract Data Type, ADT)
类通常表示更加通用的概念
ADT使用通用的方式描述数据类型,而没有引入语言或实现细节
比如栈:
- 创建空栈
- 从栈顶添加数据
- 从栈顶删除数据
- 栈是否满
- 栈是否空
stack.h
-
//stack.h -- 堆栈的类定义实现
-
#ifndef STACK_H_
-
#define STACK_H_
-
-
typedef unsigned long Item;
-
-
class Stack
-
{
-
public:
-
Stack();
-
bool isempty() const;
-
bool isfull() const;
-
// push()如果满了就返回错误,否则返回正确
-
bool push(const Item & item);
-
// pop()如果是空就返回错误
-
bool pop(Item & item);
-
-
-
private:
-
enum //注意这里的枚举
-
{
-
MAX = 10
-
};
-
Item items[MAX];
-
int top;
-
-
};
-
-
-
#endif
stack.cpp
-
//stack.cpp -- 类成员函数的定义
-
#include"stack.h"
-
-
Stack::Stack()//创建空的堆栈
-
{
-
top = 0;
-
}
-
-
bool Stack::isempty() const
-
{
-
return top == 0;
-
}
-
-
bool Stack::isfull() const
-
{
-
return top == MAX;
-
}
-
-
bool Stack::push(const Item & item)
-
{
-
if (top<MAX)
-
{
-
items[top++] = item;
-
return true;
-
}
-
else
-
{
-
return false;
-
}
-
}
-
-
bool Stack::pop(Item & item)
-
{
-
if (top>0)
-
{
-
item = items[--top];
-
return true;
-
}
-
else
-
{
-
return false;
-
}
-
}
stacker.cpp
-
//stacker.cpp -- 测试堆栈的类
-
#include<iostream>
-
#include<cctype>
-
#include"stack.h"
-
int main()
-
{
-
using namespace std;
-
//创建空的堆栈
-
Stack st;
-
-
char ch;
-
unsigned long po;
-
cout << "请输入 A 添加,\n"
-
<< "P 等价于PO,Q表示退出\n\n" << endl;
-
-
while (cin >> ch && toupper(ch) != 'Q')
-
{
-
while (cin.get() != '\n')
-
continue;
-
if (!isalpha(ch))
-
{
-
cout << '\a';
-
continue;
-
}
-
switch (ch)
-
{
-
case 'A':
-
case 'a':
-
cout << "输入 一个PO数字加入:";
-
cin >> po;
-
if (st.isfull())
-
{
-
cout << "老铁,堆栈满了啊,加不进去\n";
-
}
-
else
-
{
-
st.push(po);
-
}
-
break;
-
case 'p':
-
case 'P':
-
if (st.isempty())
-
{
-
cout << "老哥,你一直删除,都没东西了已经\n";
-
}
-
else
-
{
-
st.pop(po);
-
cout << "PO # " << po << "被删了" << endl;
-
}
-
default:
-
break;
-
}
-
cout << "请输入 A 添加,\n"
-
<< "P 等价于PO,Q表示退出\n\n" << endl;
-
}
-
cout << "再见了,不想在看到你!\n";
-
return 0;
-
}
程序运行结果
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:1
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:2
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:3
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:4
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:5
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:6
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:7
请输入 A 添加,
P 等价于PO,Q表示退出
A8
输入 一个PO数字加入:8
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:9
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:10
请输入 A 添加,
P 等价于PO,Q表示退出
A
输入 一个PO数字加入:11
老铁,堆栈满了啊,加不进去
请输入 A 添加,
P 等价于PO,Q表示退出
P
PO # 10被删了
请输入 A 添加,
P 等价于PO,Q表示退出
p
PO # 9被删了
请输入 A 添加,
P 等价于PO,Q表示退出
P
PO # 8被删了
请输入 A 添加,
P 等价于PO,Q表示退出
P
PO # 7被删了
请输入 A 添加,
P 等价于PO,Q表示退出
Q
再见了,不想在看到你!
请按任意键继续. . .
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/98962704
- 点赞
- 收藏
- 关注作者
评论(0)