📄 h.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 + -