您的位置:首页 > 理论基础 > 数据结构算法

数据结构269:判断字符串是否为回文(即是否有中心对称关系)

2020-06-04 07:54 295 查看

问题描述
输入一个字符串,判断其是否为回文(即是否有中心对称关系)。其中,abccba与abcba都可以被判断是回文,而abcfa就不是回文。

输入说明
输入字符串,判断是否回文。

输出说明
当字符串是回文的时候,输出right
当字符串不是回文的时候,输出wrong

输入样例
样例1:abcba
样例2:abccba
样例3:abcfa
样例4:11221

输出样例
样例1:right
样例2:right
样例3:wrong
样例4:wrong

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 100
typedef struct node
{
char elements[MAXSIZE];
int Top;
}stack;
stack *S;
stack *setnull(stack *S)
{
S->Top=-1;
return S;
}
char pop(stack *S)
{
char ret;
if(S->Top==-1) return NULL;
else
{
ret=S->elements[S->Top];
S->Top--;
return ret;
}
}
stack *push(stack *S, char e)
{
if(S->Top+1==MAXSIZE) return NULL;
else
{
S->Top++;
S->elements[S->Top]=e;
return S;
}
}
int correct(char String[],int len)
{
char c[100];
int i,l=0;
setnull(S);
for(i=0;i<len/2;i++) push(S,String[i]);
for(i=0;i<len/2;i++) c[i]=pop(S);
if(len%2==0)
{
for(i=0;i<len/2;i++)
{
if(c[i]==String[i+len/2]) l++;
}
}
else
{
for(i=0;i<len/2;i++)
{
if(c[i]==String[1+i+len/2]) l++;
}
}
if(l==len/2) return 1;
else return 0;
}
int main()
{
int sign;
int len;
char str[100];
S=(stack*)malloc(sizeof(stack));
gets(str);
len=strlen(str);
sign=correct(str,len);
if(sign) printf("right\n");
else printf("wrong\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐