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.抽象数据类型的主要内容,如果未能解决你的问题,请参考以下文章

xcode c++错误:分配抽象类类型'Grain'的对象

Eclipse 包资源管理器对每种文件类型都有不同的图标:接口、抽象类等

了解抽象数据类型

java抽象数据类型

抽象数据类型

抽象数据类型(ADT)和面向对象编程(OOP)3.3 抽象数据类型