实现中心对称的字符的匹配!!!如:a+b@b+a#的检验!帮帮忙!!谢谢啦!!
#include <stdio.h>//实现中心对称的字符的匹配#include <malloc.h>
#define OK 1
#define ERROR 0
typedef char SElemType;
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base)return ERROR;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status push(SqStack &S,SElemType &c1)
{
if(S.top-S.base>=S.stacksize){
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT) * sizeof(SElemType));
if(!S.base)return ERROR;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=c1;
return OK;
}
Status gettop(SqStack &S,SElemType &e1)
{
if(S.top==S.base)return ERROR;
e1=*(S.top-1);
return OK;
}//获得栈顶元素
Status pop(SqStack &S,SElemType e)
{
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}
Status StackEmpty(SqStack &S)
{
if(S.top==S.base)
return OK;
else
return ERROR;
}
int main()
{
SqStack S;
InitStack(S);
int a[10];int i;
int b[10];int j;
int k,k1;
char c1,e1,e;
printf("请输入数据:\n");
while(c1!='#')
{
scanf("%c",&c1);
push(S,c1);
}
printf("输入完毕\n");
for(i=0;i<=10;i++)
{
while(e1!='@')
{
gettop(S,e1);
a[i]=e1;
}
if(e1=='@'){k=i;break;}
}
k1=0;
for(j=0;j<=10;j++)
{
while(!StackEmpty(S))
{
pop(S,e);
b[j]=e;
k1++;
}
}
for(i=0,j=1;i<=k,j<=k1;i++,j++)
{
if(a[i]!=b[j])printf("该序列不对称");
else
if(i==k&&j==k)printf("该序列中心对称");
}
return OK;
}