⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 回文.cpp

📁 用c++写的回文判断 用两 个栈实现的 一个用于辅助
💻 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 + -