问题:假设称正读和反读都相同的字符序列为回文,例如,‘abba’和‘abcba'是回文,‘abcde’和‘ababab'则不是回文。试写一个算法判别读入的一个一‘@’为结束符的字符序列是否是回文。
算法思想:栈的操作为后进先出,队列的操作为先进先出,利用栈和队列的这两个性质,比较出栈和出队的元素是否相同,即可判断字符序列是否为回文
//回文的判别算法
int Palindrome()
{
MyStack *stack;
LinkQueue *lq;
int sch,qch;
stack = InitStack();
lq = InitQueue();
printf("请输入字符串:");
while((sch=getchar())!='@')
{
PushStack(stack, sch);
EnQueue(lq, sch);
}
while(stack->top!=stack->base)
if(PopStack(stack,&sch)==-1||
DeQueue(lq, &qch)==-1||(sch!=qch))
{
DestroyStack(stack);
DestroyQueue(lq);
return -1;
}
DestroyStack(stack);
DestroyQueue(lq);
return 0;
}