回文判断实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
回文判断实验报告
一.实验题目:回文判断
二.实验目的:
对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。
三.实验需求:
1.数据从键盘读入;
2.输出要判断的字符串;
3.利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”否则输出“No”
四.主要实现函数
(1)建立顺序栈存储结构
typedef struct { }
(2)初始化
int initstack(Sqstack &s,int maxsize)
(3)入栈
int enstack(Sqstack &s, char e)
(4)出栈
int popstack(Sqstack &s,char &e)
(5)判断是否为回文
int main()
{
int r; //用于判断是否为回文
Sqstack L,Q; //定义两个栈
initstack(L,20);
initstack(Q,20);
int l; //用于记录输入字符的长度cout<<"请输入字符串长度";
cin>>l;
if(l<=0)exit(1);
cout<<"输入字符"< for(int i=1;i<=l;i++) //输入字符 { char p; cin>>p; enstack(L,p); //入栈 L } cout< for(int m=1;m<=l;m++) { char f; f=getstack(L,m); //从栈 L中取元素,在入栈 Q enstack(Q,f); } for(int n=1;n<=l;n++) { char a,b; //从栈 L Q 出栈,比较 popstack(L,a); popstack(Q,b); if(a!=b)r=1; else r=2; } if(r==1)cout<<"no"< 五.源程序 #include using namespace std; typedef char SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize; }Sqstack; int initstack(Sqstack &s,int maxsize) / { =new SElemType[maxsize]; if(!exit(1); =; =maxsize; return 0; } int enstack(Sqstack &s, char e) { if 0; } int popstack(Sqstack &s,char &e) { if==exit(1); e=*; return 0; } int getstack(Sqstack &s,int i) { SElemType *p; p=; for(int j=1;j<=i;j++) {p--;} return *p; } int main() { int r; Sqstack L,Q; initstack(L,20); initstack(Q,20); int l; cout<<"请输入字符串长度"; cin>>l; if(l<=0)exit(1); cout<<"输入字符"< for(int i=1;i<=l;i++) { char p; cin>>p; enstack(L,p); } cout< for(int m=1;m<=l;m++) { char f; f=getstack(L,m); enstack(Q,f); } for(int n=1;n<=l;n++) { char a,b; popstack(L,a); popstack(Q,b); if(a!=b)r=1; else r=2; } if(r==1)cout<<"no"< else if(r==2)cout<<"yes"< else cout<<"发生错误"< cout<<"继续判断输入Y,退出输入N"< if(d=='y'||d=='Y')main(); else return 0; } 五.各功能的运行界面: (1)主界面: (2)输入1,2,3,4四个字符判断是否是回文,运行界面如下: (3)设置字符串长度为5,a,s,d,s,a,判断是否为回文,运行界面如下: