以下代码利用顺序栈操作实现回文序列的判定
#include<stdio.h>
#include<string.h>
#include<iostream>
#define MAXSIZE 100
#define ERROR 0
#define OVERFLOW -1
#define OK 1
using namespace std;
typedef int status;
typedef char selemtype; //因用到字符串的数组,所以将栈元素类型设置为char类型;
typedef struct
{
selemtype *base;//栈底
selemtype *top;//栈顶
int staksize;
}sqstack;
status initstack(sqstack &s)
{
s.base=new selemtype[MAXSIZE];
if (!s.base){
return OVERFLOW;
}
s.top=s.base;
s.staksize=MAXSIZE;
return OK;
}
int push(sqstack &s,selemtype e)
{
if(s.top-s.base==s.staksize)
{
return ERROR;
}
*(s.top++)=e;
return OK;
}
status pop(sqstack &s,selemtype &e)
{
if (s.top==s.base)
{
return ERROR;
}
e=*--s.top;
return OK;
}
int main()
{
sqstack s;
while(1){
initstack(s);
char a[MAXSIZE],b[MAXSIZE];
cout<<"请输入序列:";
gets(a);
for(int i=0;i<strlen(a);i++)
{
push(s,a[i]);
}
for(int i=0;i<strlen(a);i++)
{
pop(s,b[i]);
}
puts(b);
for(int i=0;a[i]!=b[i];i++)
{
if(a[i]!=b[i])
{
cout<<"不";
}
}
cout<<"是回文序列\n";
memset(a,0,sizeof(a));//清空数组
memset(b,0,sizeof(b));
}
}
还望阅读此篇的博友们赐教