- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 栈基本运算
实验三 栈的基本运算
实验目的
掌握使用Turbo C(C++)上机调试栈的基本方法;
掌握栈的基本操作在链接存储结构上的运算。
实验要求
按实验内容编写实验的程序,主程序以菜单形式运行。
上机调试运行本程序。
保存和打印出程序的运行结果,并结合程序进行分析。
提交源程序和运行结果。
实验内容
利用栈实现进制转换。
利用栈实现判定表达式中括号是否匹配。
C++实验程序参见实验指导书和主教材随书光盘。
//SeqStack.h
#ifndef SEQSTACK_H
#define SEQSTACK_H
const int StackSize=10; //10只是示例性的数据,可以根据实际问题具体定义
template class T //定义模板类SeqStack
class SeqStack
{
public:
SeqStack( ) ; //构造函数,栈的初始化
~SeqStack( ); //析构函数
int fun(char E[]); //判断是否为回文
int correct(char exp[]); //判断表达式括号是否匹配
void chang(int x,int r); //进制转换
private:
T data[StackSize]; //存放栈元素的数组
int top; //栈顶指针,指示栈顶元素在数组中的下标
};
#endif
//SeqStack.cpp
#include SeqStack3.h
/*
* 前置条件:栈不存在
* 输 入:无
* 功 能:栈的初始化
* 输 出:无
* 后置条件:构造一个空栈
*/
template class T
SeqStackT::SeqStack( )
{
top=-1;
}
/*
* 前置条件:栈已存在
* 输 入:无
* 功 能:销毁栈
* 输 出:无
* 后置条件:释放栈所占用的存储空间
*/
template class T
SeqStackT::~SeqStack( )
{
}
/*
* 前置条件:字符串、栈已存在
* 输 入:无
* 功 能:判断字符串是否为回文
* 输 出:如果栈为回文,返回1,否则,返回0
* 后置条件:字符串、栈不变
*/
template class T
int SeqStackT::fun(char E[])
{ int i=0;
top=-1; //栈初始化
while (E[i]!=\0) //将字符串依次入栈
{data[++top]=E[i++];
}
i=0;
while (E[i]!=\0 top!=-1) //将字符串中字符依次与栈中字符进行比较
{if(E[i]==data[top])
{i++;
top--;
}
else
break;
}
if(E[i]==\0 top==-1) return 1; //匹配成功,回文
else return 0; //匹配不成功,非回文
}
/*
* 前置条件:字符串、栈已存在
* 输 入:无
* 功 能:判断表达式(字符串)中括号是否匹配
* 输 出:如果匹配返回1,否则,返回0
* 后置条件:字符串、栈不变
*/
template class T
int SeqStackT:: correct(char exp[])
{
int i=0;
top=-1;
while(exp[i]!=\0)
{
switch(exp[i])
{
case (:
data[++top]=exp[i++];
break;
case ):
if(top!=-1) {top--;i++;}
else return 0;
break;
}
}
if(top==-1)
return 1;
else return 0;
}
/*
* 前置条件:栈已存在
* 输 入:要转换的十进制整数x和转换的进制数r
* 功 能:将十进制整数x转换为r进制整数
* 输 出:转换后的r进制整数
* 后置条件:栈不变
*/
template class T
void SeqStackT:: chang(int x,in
您可能关注的文档
- 关于春诗词名句.doc
- 关于檀木常识,你了解多少。.doc
- 关于盔形器几个问题.doc
- 关于秦怀王墓出土麦秸画释疑.doc
- 关于道路交通现代化建设可持续发展-00.doc
- 典型化学反应危险性.doc
- 再审程序再审程序中缓刑考验期限起算和探讨应用.doc
- 再论三国时期关城、阳安关口与阳平关地理位置.doc
- 写给即将开始大学生活同学们.doc
- 农田中小钢厂.doc
- 2025年天津市冷链物流基地配套道路建设可行性研究报告.docx
- 2025年天津市母婴护理会所专业化服务升级路径可行性研究报告.docx
- 2025年成都市私立医院医美抗衰中心创建可行性研究报告.docx
- 2025年成都市淡化海水在城市道路清洗领域的应用可行性研究报告.docx
- 2025年上海市环卫厨余垃圾生物处理技术应用可行性研究报告.docx
- 2025年天津市花西子针对户外运动妆容的可行性.docx
- 2025年上海市生物发电于秸秆炭化还田协同发电的可行性研究.docx
- 2025年天津市物造纸在可降解农用地膜领域的应用可行性研究报告.docx
- 2025年天津市无人值守充电站智能运维可行性研究报告.docx
- 2025年天津市竹荪种植连作障碍防治技术可行性研究报告.docx
文档评论(0)