- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
魔王语言程序
/*
maintest.cpp
魔王语言解释程序主测试文件,
文件 FiendTranslater 中自定义了一个魔王语言解释类及其实现,
LastModified:---
*/
#include iostream
/*
文件名:base
基本数据结构类的定义和实现: MyStack ,MyPoint,MyArc,Graph,MyQueues
MyStack为构造的一个通用的C++模版堆栈类;
MyPoint为一个坐标结构
MyArc为带权的边类
Graph为临街矩阵表示的图
MyQueues为按权值顺序存储的边的队列
LastModified:---
*/
#define BASE_H
#includelist
using namespace std;
/*
MyStack 堆栈类的结构 [ 0 1 ... curlen ... size]
[栈底(bottom) ... prt ... ]
*/
#define BASESIZE 64 //默认堆栈数组空间大小(8*8),可以自扩充
template class Type
class MyStack
{
private:
Type *bottom; // 元素存放的动态数组
int size,ptr; // 堆栈大小和当前栈顶元素索引
public:
//构造函数
MyStack()
{
bottom=new Type[BASESIZE];ptr=-1;size=BASESIZE;
};
//析构函数
~MyStack(){delete []bottom;};
//清栈还原
inline void clear()
{
if(bottom!=NULL)
delete []bottom;
bottom=new Type[size];
ptr=-1;
};
//判栈空
inline bool IsEmpty()
{
if(ptr==-1) return true;
else return false;
}
//入栈
int push(Type e);
//出栈
int pop(Type e);
//获得栈顶元素
int top(Type e);
int settop(Type e);
// 用callback函数对栈从低向上遍历
void traverse(void callback(Type *),Type *);
private:
inline int extent()
{
int s=size;
Type *temp=new Type[size];
for(int i=0;is;i++)
temp[i]=bottom[i];
size*=2;
clear();
ptr=s+1;
for(int j=0;js;j++)
bottom[j]=temp[j ];
delete [] temp;
return size;
}
};
/*
MyStack的实现
*/
/*压栈*/
template class Type
int MyStackType::push(Type e) //
{
if(++ptr==size) extent();
bottom[ptr]=e;
return ptr;
}
/*出栈*/
template class Type
int MyStackType::pop(Type e) //
{
if(ptr==-1)
return -2;//栈空,返回 -2 !
else
e=bottom[ptr--];
return ptr;
}
/*获取栈顶元素*/
template class Type
int MyStackType::top(Type e) //
{
if(ptr=
文档评论(0)