九月二十五日
用栈实现回文字符串
#include<iostream>
#include<string>
using namespace std;
typedef struct
{
char data[101];
int top;
}SqStack;
void InitStack(SqStack &S)
{
S.top=-1;
}
void Push(SqStack &S,char e)
{
S.data[++S.top]=e;
}
void Pop(SqStack &S,char &e)
{
e=S.data[S.top--];
}
int main()
{
int n;
cin>>n;
cin.ignore();
char a[101];
for(int i=0;i<n;i++)
{
a[i]=cin.get();
}
char c[101];
char d[101];
int t=0;
for(int i=0,j=0;i<n;i++,j++)
{
if(a[i]!=' ')
{
c[j-t]=a[i];
}
if(a[i]==' ')
{
t++;
}
}
if(t!=0)
{
cout<<"入栈不成功"<<endl;
return 0;
}
for(int i=0;i<n-t;i++)
{
d[i]=c[i];
}
SqStack S;
InitStack(S);
for(int i=0;i<n-t;i++)
{
Push(S,c[i]);
}
char e;
for(int i=0;i<n-t;i++)
{
Pop(S,e);
c[i]=e;
}
int f=0;
for(int i=0;i<n-t;i++)
{
if(c[i]!=d[i])
f++;
}
if(f!=0)
{
cout<<"此字符串不是回文串";
}
if(f==0)
{
cout<<"此字符串是回文串";
}
return 0;
}

浙公网安备 33010602011771号