回文判断,写一个C++程序同时用栈和队列判断回文(急!!)

出栈:倒序出队:顺序二者依次相等即可判断为回文。按如下算法写:intPalindrome_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0{InitS... 出栈:倒序
出队:顺序
二者依次相等即可判断为回文。
按如下算法写:
int Palindrome_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0
{
InitStack(S);InitQueue(Q);
while((c=getchar()!='@')
{
Push(S,c);EnQueue(Q,c); //同时使用栈和队列两种结构
}
while(!StackEmpty(S))
{
Pop(S,a);DeQueue(Q,b));
if(a!=b) return ERROR;
}
return OK;
}//Palindrome_Test
展开
 我来答
缑家09s
2007-04-20 · TA获得超过223个赞
知道答主
回答量:75
采纳率:0%
帮助的人:64.1万
展开全部
#include <iostream>
using namespace std;

//定义栈
typedef struct stack {
char bata;
struct stack *next;
}Stack;
//定义队列
typedef struct QNode {
char data;
struct QNode *next;
}QNode, *QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;

int main()
{
Stack *top = new Stack;
if(!top) exit(1);
top = NULL;//初始化栈

LinkQueue *x = new LinkQueue;
if(!x) exit(1);
x->front = x->rear=NULL;//初始化队列

cout<<"请输入要检测的字符串,可以包含空格,以@结束"<<endl;
char sr[100];
sr[0] = ' ';
int i=-1;
do{
i++;
cin>>sr[i];
stack *s1 = new stack;
if(!s1) exit(1);
if(i==0)
{
s1->next = NULL; //输入栈第一个数据
s1->bata=sr[i];
top = s1;
}
s1->bata = sr[i];
s1->next = top;
top = s1;

QNode *x1 = new QNode;
if(!x1) exit(1);
if(i==0) //输入队列第一个数据
{
x1->data = sr[i];
x->front = x1;
x->rear = x1;
x->front->next = NULL;
}
x1->data = sr[i];
x->rear->next = x1;
x->rear = x1;

} while(sr[i]!='@');
cout<<"检测结果"<<endl;
if(top==NULL&&x->front==NULL)
cout<<"未输入!!!"<<endl;
top = top->next; //将'@'字符删除
while(top!=NULL&&x->front!=NULL)
{
if(top->bata!=x->front->data)
{
cout<<"此字符串不是回文!"<<endl;
return 0;
}
else
{
cout<<"此字符串是回文。"<<endl;
return 0;
}

}
}里面有具体操作没有用函数分开写,但都是按栈和队列写的
飘渺世间天
推荐于2018-03-26 · TA获得超过2650个赞
知道大有可为答主
回答量:843
采纳率:0%
帮助的人:1105万
展开全部
#include <queue>
#include <stack>
#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;
cin >> str;
stack<char> S(stack<char>::container_type(str.begin(), str.end()));
queue<char> Q(queue<char>::container_type(str.begin(), str.end()));

while(!S.empty() && S.top() == Q.front())
{
S.pop();
Q.pop();
}

if(S.empty())
cout << "回文" << endl;
else
cout << "No回文"; << endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7483f44
2007-04-19 · TA获得超过1195个赞
知道小有建树答主
回答量:662
采纳率:0%
帮助的人:1021万
展开全部
#include <iostream>
#include <queue>
#include <stack>

using namespace std;

int main( )
{
queue<char> q;
stack<char> s;
char data[ 15 ];
int i;
bool flag = true;
cin >> data;
for ( i = 0; i < strlen( data ); i++ )
{
q.push( data[ i ] );
s.push( data[ i ] );
}
for ( i = 0; i < strlen( data ); i++ )
{
if ( q.front( ) != s.top( ) )
{
flag = false;
break;
}
q.pop( );
s.pop( );
}
if ( flag )
cout << "是回文数!";
else
cout << "不是回文数!";
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式