编程序判断一个字符序列是否是回文,要求只使用堆栈,不使用队列.
注意:只使用堆栈用VC++编程谢谢能不能麻烦各位把编好的程序写出来啊,最好能在旁边写上注释本人很笨的,所以拜托了...
注意: 只使用堆栈
用VC++编程
谢谢
能不能麻烦各位把编好的程序写出来啊,最好能在旁边写上注释
本人很笨的,所以拜托了 展开
用VC++编程
谢谢
能不能麻烦各位把编好的程序写出来啊,最好能在旁边写上注释
本人很笨的,所以拜托了 展开
展开全部
给个思路吧.先计算字符序列长度.然后用一个for循环将前面一半先入栈.然后再用一个for循环退栈做比较就可以了,大致的代码如下:
{
char tmp='\0';
int answer = 1;
int len = strlen(s);//自己注意下奇偶长度
for (i=0;i<len/2;i++)
{push(&s, s[i]);}//s为栈
for (;i<len; i++)
{tmp=pop(&s);if (tmp!=s) {answer=0;break;}}
return answer;//返回0不是回文,返回1是回文
}
给你的这个函数体可以做些优化的,但这样写主要是给你个思路.怕优化了你会产生新的疑问.
优化的事情有:2个函数体并为一个,for的条件用s[i]!='\0',而不是用i<len.
{
char tmp='\0';
int answer = 1;
int len = strlen(s);//自己注意下奇偶长度
for (i=0;i<len/2;i++)
{push(&s, s[i]);}//s为栈
for (;i<len; i++)
{tmp=pop(&s);if (tmp!=s) {answer=0;break;}}
return answer;//返回0不是回文,返回1是回文
}
给你的这个函数体可以做些优化的,但这样写主要是给你个思路.怕优化了你会产生新的疑问.
优化的事情有:2个函数体并为一个,for的条件用s[i]!='\0',而不是用i<len.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询