Status isPlalindrome(char *exp)
{// 如果exp是合法的回文,返回TRUE;否则返回FALSE;
SqStack S;
InitStack_Sq(S, INITSIZE, 5);
// Add your code here
//先遍历一遍字符串
//求出字符串的长度
//以此来确认入栈和出栈操作的分界点
//根据数学计算
//如果字符串的长度是偶数,就应当在分界点(length/2)-1处切换入栈、出栈操作
//如果字符串的长度是奇数,由于int类型的数据会舍去小数部分,因此在(length/2)-1处停止入栈操作,并且跳过一个元素,然后再进行出栈操作
//下面先统计字符串的长度
int length=0;
while((exp[length])!=NULL){
length++;
}
//操作转折点的值
int turningPoint=length/2-1;
for(int i=0;i<length;i++){
//如果i的值小于等于转折点的值,就执行入栈操作
if(i<=turningPoint){
Push_Sq(S,exp[i]);
continue;
}
//判断length是奇数还是偶数
//是奇数就先跳过一个元素再进行出栈比较
//是偶数则无需跳过任何元素,直接开始出栈比较
if(length%2!=0&&i==length/2){
continue;
}
//现在进行字符的比较操作
//根据栈后进先出的原则
//如果原字符串是回文的,那么出栈的第一个元素应该与当前正在遍历的元素相等,以此类推
char character;
Pop_Sq(S,character);
//如果比较发现二者不相等,那么无需继续执行程序,原字符串一定不是回文的
if(character!=exp[i])return FALSE;
}
//执行到这里说明字符串已经比较完毕了
//符合规则,是回文的
return TRUE;
}
02-10
6328
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)