通过栈判断回文
- 栈的初始化
void InitStack(SqStack *s)
{
s->top=0;
}
- 判断栈是否为空
bool isEmptyStack(SqStack s)
{
if(s.top == 0)
{
return false;
}
else
{
return true;
}
}
- 入栈
bool Push(SqStack *s,ElemType e)
{
if(s->top>=MAXSIZE)
{
return false;
}
else
{
s->data[s->top] = e;
s->top++;
return true;
}
}
- 出栈
bool Pop(SqStack *s,ElemType *e)
{
if(s->top == 0)
{
return false;
}
else
{
s->top--;
*e = s->data[s->top];
return true;
}
}
- 主函数代码
int main()
{
SqStack s;
InitStack(&s);
int length,mid,i,temp;
ElemType e;
ElemType huiwen[100];
scanf("%s",huiwen);
length = strlen(huiwen);
mid = length/2;
for(i=0;i<mid;i++)
{
Push(&s,huiwen[i]);
}
if(length%2!=0)
{
temp = mid+1;
}
else
{
temp = mid;
}
for(i=temp;i<length;i++)
{
Pop(&s,&e);
if(e != huiwen[i])
{
printf("不是回文\n");
return 0;
}
}
printf("是回文\n");
return 0;
}