赞
踩
以下代码利用顺序栈操作实现回文序列的判定
#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)); } }
还望阅读此篇的博友们赐教
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。