7-2 回文判断 (20 分)
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。

输入格式:
输入待判断的字符序列,按回车键结束,字符序列长度<20。

输出格式:
若字符序列是回文,输出“YES”;否则,输出“NO”。

输入样例:
abdba
输出样例:
YES

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef char Data;
typedef struct Stack
{
   
	Data data;
	struct Stack* next;
}LinkStack;
LinkStack* init()
{
   
	LinkStack* lS = (LinkStack*)malloc(sizeof(LinkStack));
	lS->next = NULL;
	return lS;
}
int push(LinkStack* ls, Data data)
{
   
	LinkStack* newNode = (LinkStack*)malloc(sizeof(LinkStack));
	newNode->data = data;
	newNode->next = ls->next;
	ls->next = newNode;
	return 1;
}
int pop(LinkStack* ls, Data* data)
{
   
	LinkStack* del = ls->next;
	if (ls->next == NULL)
	{
   
		printf("栈空");
		return 0;
	}
	*data = del->data;
	ls->next = del->next;
	free(del);
	return 1;
}
int main()
{
   
	LinkStack* ls = init();
	char str[20];
	char n[20];
	char cs[20] = {
   0};
	scanf("%s", str);
	strcpy(n, str);
	int len = strlen(str);
	for (int i = 0; i < len; i++)
	{
   
		push(ls, str[i]);
	}
	for (int i = 0; i < len; i++)
	{
   
		pop(ls, str);
		cs[i] = *str;
	}
	if (strcmp(n, cs))
	{
   
		printf("NO");
	}
	else
	{
   
		printf("YES");
	}

	return 0;
}