您的位置:首页 > 其它

回文判断(一个栈是不是回文)

2017-05-18 16:49 134 查看
1、判断一个栈是不是回文?

思路:根据栈的特性,可以将字符串全部压入栈,再依次将各个字符出栈,从而得到原字符串的逆置串,将逆置串中的各个字符分别和原字符串中各个字符进行比较,如果完全一致,则为回文串。

#include<iostream>
#include<stack>
#include<cstring>
using namespace std;

int main()
{
stack<char> s1;
char str[]="abdsdba";
//cin>>str;
cout<<strlen(str)<<endl;
for(int i=0;i<strlen(str);i++)
s1.push(str[i]);
//while(!s1.empty())
for(int i=0;i<strlen(str);i++)
{
int x=s1.top();
s1.pop();
if(x!=str[i])
{
cout<<"不是回文。"<<endl;
return 0;
}
}
cout<<"回文数。"<<endl;
return 0;
}


下面代码使用自己创建的栈来实现:

#include <iostream>
using namespace std;
typedef struct{

char data[1000];
int top;
}Stack;

void Init_stack(Stack *s)
{

s->top=0;
}
int Push_stack(Stack *s,char x)
{

s->data[s->top]=x;
s->top++;
return 1;
}
int Pop_stack(Stack *s,char *x)
{

*x=s->data[s->top-1];
s->top--;
return 1;

}

int main(int argc, char *argv[])
{
char data[1000];
int i,j;
Stack s;
char x;
Init_stack(&s);
cin>>data;
for(i=0;i<strlen(data);i++)
{

Push_stack(&s,data[i]);

}

for(i=0;i<strlen(data);i++)
{
Pop_stack(&s,&x);

if(data[i]!=x)
{

cout<<"不是回文数"<<endl;
return 0;
}
}
cout<<"回文数"<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: