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

📄 h.cpp

📁 回文判断:对于一个从键盘输入的字符串
💻 CPP
字号:
#include<iostream.h>
#include<string.h>
#define exit 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef     char SElemType;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
void InitStack(SqStack &S)                     //构造一个空栈
{ 
	S.base=new SElemType[STACK_INIT_SIZE];
	if(!S.base) exit(1);
	S.top=S.base;
	S.stacksize=STACK_INIT_SIZE;
}
void Push(SqStack &S,SElemType e)              //插入元素e为新的栈顶元素
{
	if(S.top-S.base>=S.stacksize)
	exit(1);                                   //栈满,跳出
	*S.top++=e;
}
SElemType Pop(SqStack &S,SElemType &e)
{                                              //若栈不空,则删除S的栈顶元素,用e返回其值,并返回元素e
if(S.top==S.base)exit(1);
    e=*--S.top;
return e;
}
void main()
{
int j;
char c;
SElemType e,f;
SqStack s, s1,s2;
InitStack(s);                                  //构造一个空栈
InitStack(s1);                                 //构造一个空栈
InitStack(s2);                                 //构造一个空栈
cout<<"请输入要做的判断是否是回文的次数:";
cin>>j;
cout<<endl;
while(j)
{
cout<<"输入一个字符串:"<<endl;
cin>>c;
while(c!='*')
{
 Push(s,c);
 cin>>c;
}
cout<<"将s中的数据元素放到s1和s2中"<<endl;
 while(s.top!=s.base)
 {
 Pop(s,e);
 Push(s1,e);
 Push(s2,e);

 }
cout<<"将s1中的数据元素放到和s中"<<endl;
while(s1.top!=s1.base)
{
Pop(s1,f);
Push(s,f);
}
cout<<"将s和s2的元素进行一一比较"<<endl;
while(s.top!=s.base&&s2.top!=s2.base)
{
Pop(s2,e);
Pop(s,f);
if(e!=f)

{cout<<"NO"<<endl;                             //说明此字符串不是回文
    break;
}//若程序运行时一旦遇栈s和s2中的元素不等时则跳出循环不在执行并输出NO,说明此字符串不是回文
}
if(s.top==s.base&&s2.top==s2.base)
  cout<<"YES"<<endl;                           //说明此字符串是回文
j--;
InitStack(s);                                  //构造一个空栈
InitStack(s1);                                 //构造一个空栈
InitStack(s2);                                 //构造一个空栈
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -