判断回文的函数段
//以@为结束符输入一字符串,判断其是否为回文char shezhi()
{
char ch[];
cout<<"请输入要判断的字符串,以@符号结束:";
while ([email=ch!=]ch!='@'[/email])
cin>>ch;
return ch[];
}
//方法一
int huiwen(char ch[] )
{
int n = strlen(ch);
Seqstack *s;
char x;
s=Init_Seqstack();//栈的初始化
for(int i=0;i<n/2;i++)
Push_Seqstack(s,ch[i]);//将半数元素入栈
if(n%2)
i++;
while(i<n)
Pop_Seqstack(s,*x);//出栈
if(ch[i]!=x)
return 0;
i++;
}
//方法二
//将字符串同时入栈和队列,再退栈和出队,若两者出来的顺序相同,则是回文,否则不是
int huiwen(char ch[])
{
Seqstack *s;
LQueue *q;
int n=strlen(ch);
s=Init_Seqstack();//栈的初始化
q=Init_LQueue();//队列的初始化
for(int i=0;i<n;i++)
{
Push_Seqstack(s,ch[i]);//入栈
In_LQueue(q,ch[i]);//入队列
}
for (i=0;i<n;i++)
{
char x=Top_Seqstack(s);//取栈顶元素
char y=q->front->data;//取队头元素
if(x!=y)
return 0;
Pop_Seqstack(s);
Out_LQueue(q);
}
if(i==n)
return 1;
}