回文判断实验报告一.实验题目:回文判断二.实验目的:对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。三.实验需求:1.数据从键盘读入;2.输出要判断的字符串;3.利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”否则输出“No”四.主要实现函数(1)建立顺序栈存储结构typedefstruct{}(2)初始化intinitstack(Sqstack&s,intmaxsize)(3)入栈intenstack(Sqstack&s,chare)(4)出栈intpopstack(Sqstack&s,char&e)(5)判断是否为回文intmain(){intr;//用于判断是否为回文SqstackL,Q;//定义两个栈initstack(L,20);initstack(Q,20);intl;//用于记录输入字符的长度cout请输入字符串长度;cinl;if(l=0)exit(1);cout输入字符endl;for(inti=1;i=l;i++)//输入字符{charp;cinp;enstack(L,p);//入栈L}coutendl;for(intm=1;m=l;m++){charf;f=getstack(L,m);//从栈L中取元素,在入栈Qenstack(Q,f);}for(intn=1;n=l;n++){chara,b;//从栈LQ出栈,比较popstack(L,a);popstack(Q,b);if(a!=b)r=1;elser=2;}if(r==1)coutnoendlendl;五.源程序#includeiostreamusingnamespacestd;typedefcharSElemType;typedefstruct{SElemType*base;SElemType*top;intstacksize;}Sqstack;intinitstack(Sqstack&s,intmaxsize)/{s.base=newSElemType[maxsize];if(!s.base)exit(1);s.top=s.base;s.stacksize=maxsize;return0;}intenstack(Sqstack&s,chare){if(s.top-s.base==s.stacksize)exit(1);*s.top=e;s.top++;return0;}intpopstack(Sqstack&s,char&e){if(s.top==s.base)exit(1);e=*--s.top;return0;}intgetstack(Sqstack&s,inti){SElemType*p;p=s.top;for(intj=1;j=i;j++){p--;}return*p;}intmain(){intr;SqstackL,Q;initstack(L,20);initstack(Q,20);intl;cout请输入字符串长度;cinl;if(l=0)exit(1);cout输入字符endl;for(inti=1;i=l;i++){charp;cinp;enstack(L,p);}coutendl;for(intm=1;m=l;m++){charf;f=getstack(L,m);enstack(Q,f);}for(intn=1;n=l;n++){chara,b;popstack(L,a);popstack(Q,b);if(a!=b)r=1;elser=2;}if(r==1)coutnoendlendl;elseif(r==2)coutyesendlendl;elsecout发生错误endl;cout继续判断输入Y,退出输入Nendl;chard;cind;if(d=='y'||d=='Y')main();elsereturn0;}五.各功能的运行界面:(1)主界面:(2)输入1,2,3,4四个字符判断是否是回文,运行界面如下:(3)设置字符串长度为5,a,s,d,s,a,判断是否为回文,运行界面如下: