#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef char datatype;
typedef struct node
{
datatype data;
struct node * pNext;
}linklist;
void PUSHL(linklist **S,datatype e)
{
linklist *p;
p=(linklist*)malloc(sizeof(linklist));
p->data=e;
p->pNext=*S;
*S=p;
}//入栈
datatype POPL(linklist **S)
{
datatype X;
if((*S)==NULL)
{
printf("栈溢出/n");
return -1;
}
else
{
X=(*S)->data;
(*S)=(*S)->pNext;
return(X);
}
}//出栈
bool MYFUNC(datatype *str)
{
linklist*q;
int n,i,j;
datatype ch;
i=0;
n=strlen(str);
q=(linklist*)malloc(sizeof(linklist));
while(i<(n/2))//i是为了记数,让一半的字符入栈;
{
PUSHL(&q,str[i]);
i++;
}
i++;//使i指向未入栈的字符;
j=n/2;//j的功能是控制后面的字符;
while(i<n)
{
ch=str[n-j];
if(ch!=POPL(&q))//调用的时候用了**;
return false;
j--;
i++;
}
return true;
}//关键函数判断是否对称
int main()
{
datatype str[100];
printf("请输入字符串:");
scanf("%s",str);
if(MYFUNC(str)){
printf("是对称字符串。。。/n");
return 1;
}
else{
printf("不是对称字符串。。。/n");
return 0;
}
return 0;
}