while(cin>>x) {
EnQueue(Q, x);
Push(S, x);
i++;
if(cin.get()=='\n') break;
}
这一段代码为什么在输入奇数个字符时能检测到回车键,输入偶数个字符时就检测不到回车键啊😭
题目输入一串字符,以回车结束,利用栈和队列来判断它是否是回文
主函数int main( )
{
SqQueue Q;//定义队列
SqStack S;//定义栈
int i=0,j;
int y=1;
char x,m,n;
InitQueue(Q);//初始化队列
InitStack(S);//初始化栈
while(cin>>x) {
EnQueue(Q, x);//入列
Push(S, x);//入栈
i++;
if(cin.get()=='\n') break;
}
for(j=0;j<i;j++){
DeQueue(Q, m);//出列
Pop(S, n);//出栈
if (m==n) continue;
else{
y=0;
break;
}
}
cout<<y;
system("pause");
return 0;
}
因为cin>>x读一个数入队,cin.get读第二个并检测第二个是不是回车,所以,以此类推,回车是第n个,n是偶数时才会被检测
x是字符型变量吗?偶数字符是什么意思?
x是字符类型么?输入x就检查是否为换行符啊,为何去检查下一个
如果下一个不是,就被你跳过去这个字符了。
比如输入ab\n,x接收a,然后b被你get掉,判断不是换行就继续,结果下一个x就接收\n啦。所以你再get就没东西了。这样如果输入偶数个字符,你就收不到换行符
如下修改就好啦:
while(cin>>x) {
if(x == '\n')
break;
EnQueue(Q, x);
Push(S, x);
i++;
}
满意还请采纳哦