数据结构之栈与队列——判断字符串是否为回文(中心对称)

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

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

#include
#include
#include

#define MAXSIZE 100//数据栈的容量

typedef struct stack
{
    char eles[MAXSIZE];
    int Top;
}st;//定义数据结构栈——st;

st* s;//声明全局变量s;

st* setnull(st* s)
{
    s->Top = -1;
    return s;
}//初始化栈

char pop(st* S)
{
    char c;
    if (s->Top == -1)return'\0';
    else
    {
        c = s->eles[s->Top];
        s->Top--;
        return c;
    }
}//出栈函数,函数返回值为栈顶元素;

st* push(st* s, char e)
{
    s->Top++;
    s->eles[s->Top] = e;
    return s;
}//进栈函数,进栈后栈顶元素为e;

int correct(char String[], int len)
{
    int i;
    for (i = 0; i < len / 2; i++)
        push(s, String[i]);
    for (i = (len / 2); i < len; i++)
    {
        if (String[i] == s->eles[s->Top])
            pop(s);
    }
    if (s->Top == -1)
        return 1;
    else return 0;
}//判断函数——如果字符串回文,函数返回1;否则,返回0;

int main()
{
    int sign; //sign为标志,sign=1是回文,sign=0不是回文 
    int len;
    char str[100];
    s = (st*)malloc(sizeof(st));
    setnull(s);

    //调用setnull函数初始化栈
    gets(str);//输入字符串 
    len = strlen(str);
    sign = correct(str, len);
    if (sign)
        printf("right\n");
    else
        printf("wrong\n");
    return 0;
}
这里插入代码片

你可能感兴趣的:(笔记,数据结构,栈)