数据结构-回文数

来源:互联网 发布:淘宝商家登陆 编辑:程序博客网 时间:2024/05/29 14:01

回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)。

#include <iostream>#include <string.h>using namespace std;#define MAXSIZE 100#define ERROR 0#define OK 1#define MAXSIZE 100#define OVERFLOW -2typedef int Status;typedef char selemtype;typedef struct{selemtype *base;selemtype *top;int stacksize;}SqStack;//初始化Status InitStack(SqStack &S){S.base=new selemtype[MAXSIZE];if(!S.base)   return OVERFLOW;S.top=S.base;S.stacksize=MAXSIZE;return OK;}//入栈Status Push(SqStack &S,selemtype e){if(S.top-S.base==S.stacksize)   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;}bool StackEmpty(SqStack S){if(S.top!=S.base)    return true;elsereturn false;}int IsHuiWen(char *t)//将一半字符入栈,再弹出字符比较, //int IsHuiWen(char t[])  //注意字符序列长度的奇偶性 {   int flag=0;SqStack s;selemtype e,temp;InitStack(s);int i,n;n=strlen(t);for(i=0;i<n/2;i++)//将一半字符入栈 {Push(s,t[i]);}for(i=(n%2==0? n/2:(n+1)/2);i<n;i++)//判断n的奇偶性 {Pop(s,e);temp=e;if(temp==t[i])flag=1;else{flag=0;break;}}return flag;}int main(){cout<<"请输入长度不大于100的字符序列:\n";char str[MAXSIZE]; cin>>str;if(IsHuiWen(str))cout<<"此序列是回文数!\n";elsecout<<"此序列不是回文数!\n";return 0; } 


0 0
原创粉丝点击