C++实现:
首先先定义头文件和顺序栈类型
#include<iostream>
#include<string.h>
#include<malloc.h>
#define Maxsize 100
using namespace std;
typedef char ElemType;
typedef struct
{char data[Maxsize];
int top; //定义栈指针
}SqStack;
然后列出要用的关于栈的函数
void InitStack(SqStack *&s) //初始化栈
{s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
}
bool Push(SqStack *&s,ElemType e) //进栈
{if(s->top==Maxsize-1) return false; //判断栈是否满
s->top++;
s->data[s->top]=e;
return true;
}
bool Pop(SqStack *&s,ElemType &e) //出栈
{if(s->top==-1) return false; //判断栈是不是空栈
e=s->data[s->top];
s->top--;
return true;
}
void Destroy(SqStack *&s) //销毁栈
{free(s);}
判断是否对称的函数(因为栈是先进后出,所以如果进去的顺序跟出来的顺序相等的话就是对称的)
bool symmery(char str[])
{SqStack *st;
char e;
InitStack(st);
for(int i=0;str[i]!='\0';i++)
{Push(st,str[i]); }
for(int i=0;str[i]!='\0';i++)
{Pop(st,e);
if(e!=str[i])
{Destroy(st);
cout<<"该字符串不是对称的\n";
return false;}}
Destroy(st);
cout<<"该字符串是对称的\n";
return true;
}
主函数
int main()
{ char str[10];
gets(str); //从键盘获取字符串给str数组;
symmery(str);
system("pause");
return 0;
}