一:什么是回文数:
121,1221,这些数从前往后读,从后往前读都是一样的。
利用栈求解思路:
我们用一个数组来存储输入的字符串ss,然后我们从下标为零到最后,取出元素放入栈,此时栈底元素即ss[0],栈顶元素即ss[strlen(ss)-1];
然后再次遍历数组,从下标零开始,与栈顶元素进行比较,即ss[0]与ss[strlen(ss)-1]即当前栈顶元素。比较完成弹出栈顶元素。依次比较直到栈为空。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
typedef struct
{
int data[MAX];
int top;
}SeqStack;
void Init_Se(SeqStack *s)
{
s->top=-1;
}
int Empty_Se(SeqStack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
int Push_Se(SeqStack *s,char x)
{
if(s->top>MAX-1)
{
printf("栈满不能入栈");
return 0;
}
++(s->top);
s->data[s->top]=x;
return 1;
}
int Pop_Se(SeqStack *s,char *x)
{
*x=s->data[s->top];
s->top--;
return 1;
}
int Palindrome_Test(char data[])
{
int i;char x;
SeqStack s;
Init_Se(&s);
for(i=0;i<strlen(data);i++)
{
Push_Se(&s,data[i]);
}
for(i=0;i<strlen(data);i++)
{
Pop_Se(&s,&x);
if(data[i]!=x)
{
printf("不是回文数");
return 0;
}
printf("是回文数");
return 1;
}
}
int main()
{
char a[100];
printf("请输入字符串:\n");
gets(a);
Palindrome_Test(a);
return 0;
}