栈实实现检测字符串是否对称
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
typedef struct stack
{
char data[MAX];
int top;
}SeqStack;
void InitStack(SeqStack *&s)
{
s=(SeqStack*)malloc(sizeof(SeqStack));
s->top =-1;
}
void ClearStack(SeqStack *&s)
{
free(s);
}
int StackLength(SeqStack *&s)
{
return s->top +1;
}
int EmptyStack(SeqStack *&s)
{
return s->top ==-1;
}
int Push(SeqStack *&s,char ch)
{
if(MAX-1==s->top)
{
printf("栈满/n");
exit(1);
}
else
{
s->data [++s->top]=ch;// -> has high precdedence to ++
//printf("%c/n",ch);
}
return 0;
}
char Pop(SeqStack *&s)
{
if(-1==s->top )
{
printf("栈空/n");
exit(1);
}
else
{
return s->data[s->top --];
}
}
void DispStack(SeqStack *&s)
{
for(int i=0;i<=s->top;i++)
{
printf("%c/n",s->data[i]);
}
}
int symmetry(SeqStack *&s,char a[])
{
char ch='/0';
int i=0;
for(i=0;a[i]!='/0';i++)
{
Push(s,a[i]);
}
DispStack(s);
for(i=0;a[i]!='/0';i++)
{
ch=Pop(s);
if(a[i]!=ch)
{
printf("not symmetry!/n");
return 0;
}
}
printf("successfully symmetry/n");
return 1;
}
int main()
{
char a[MAX]={'a','b','c','b','a'};//注意应该为其分配空间,
//char a[]={'a','b','c','b','a'};
SeqStack *s;
InitStack(s);
symmetry(s,a);
return 0;
}