58.抽象数据类型
Posted codemagiciant
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了58.抽象数据类型相关的知识,希望对你有一定的参考价值。
Stock类非常具体。然而,程序员常常通过定义类表示更通用的概念。抽象数据类型以通用的方式描述数据类型,而没有引入语言或实现细节。例如,通过使用栈,可以以这样的方式存储数据,即总是从栈顶添加或删除数据。例如,C++程序使用栈来管理自动变量。当新的自动变量被生成后,它们被添加到栈顶;消亡时,从栈中删除它们。
首先,栈存储了多个数据项(该特征使得栈成为一个容器——一种更为通用的抽象):其次,栈由可对它执行的操作来描述。
●可创建空栈
●可将数据项添加到栈顶(压入)
●可从栈顶删除数据项(弹出)
●可查看栈是否填满
●可查看栈是否空
可以将上述描述转换为一个类声明,其中公有成员函数提供了表示栈操作的接口,而私有数据成员负责存储栈数据。类概念非常适合于ADT方法。
私有部分必须表明数据存储的方式。例如,常规数组、动态分配数组或更高级的数据结构(如链表)。然而,公有接口应隐藏数据表示,而以通用的术语来表达,如创建栈、压入等。
stack.h
#pragma once
//stack.h -- 抽象数据类型的类定义
#ifndef STACK_H_
#define STACK_H_
typedef unsigned long Item;
class Stack
private:
enum MAX = 10 ;
Item items[MAX];
int top;
public:
Stack();
bool isempty() const;//判断栈是否
bool isfull() const;
//如果stack已经满了push()返回真否则返回假
bool push(const Item& item);//入栈
//如果stack已经空pop()返回真否则返回假
bool pop(Item& item);//出栈
;
#endif
stack.cpp
//stack.cpp -- Stack成员函数
#include "stack.h"
#pragma once
//stack.h -- 抽象数据类型的类定义
Stack::Stack()//创建空栈
top = 0;
bool Stack::isempty() const//判断栈是否
return top == 0;
bool Stack::isfull() const
return top == MAX;
//如果stack已经满了push()返回真否则返回假
bool Stack::push(const Item& item)//入栈
if (top < MAX)
items[top++] = item;
return true;
else
return false;
//如果stack已经空pop()返回真否则返回假
bool Stack::pop(Item& item)//出栈
if (top > 0)
item = items[--top];
return true;
else
return false;
stacker.cpp
#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS 1
//stacker.cpp -- 测试Stack类
#include <iostream>
#include <cctype>//或cctype.h
#include "stack.h"
using namespace std;
int main()
Stack st;//创建一个空栈
char ch;
unsigned long po;
cout << "请输入A入栈,\\n"
<< "输入P出栈,输入Q退出。\\n";
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.push(po);
cout << "PO # " << po << " popped\\n";
break;
cout << "请输入A入栈,\\n"
<< "输入P出栈,输入Q退出。\\n";
cout << "Bye\\n";
return 0;
以上是关于58.抽象数据类型的主要内容,如果未能解决你的问题,请参考以下文章