📄 回文.cpp
字号:
#include <iostream>
using namespace std;
typedef char SElemType;
typedef struct { //建立顺序栈存储结构
SElemType *base;
SElemType *top;
int stacksize;
}Sqstack;
int initstack(Sqstack &s,int maxsize) //初始化
{
s.base=new SElemType[maxsize];
if(!s.base)exit(1);
s.top=s.base;
s.stacksize=maxsize;
return 0;
}
int enstack(Sqstack &s, char e) //入栈
{
if(s.top-s.base==s.stacksize)exit(1);
*s.top=e;
s.top++;
return 0;
}
int popstack(Sqstack &s,char &e) //出栈
{
if(s.top==s.base)exit(1);
e=*--s.top;
return 0;
}
int getstack(Sqstack &s,int i) //取栈元素
{
SElemType *p;
p=s.top;
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<<"输入字符"<<endl;
for(int i=1;i<=l;i++) //输入字符
{
char p;
cin>>p;
enstack(L,p); //入栈 L
}
cout<<endl;
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<<"不是回文"<<endl<<endl;
else if(r==2)cout<<"是回文"<<endl<<endl;
else cout<<"发生错误"<<endl;
cout<<"继续判断输入Y,退出输入N"<<endl;
char d;cin>>d;
if(d=='y'||d=='Y')main(); //继续判断
else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -