7-1 栈实现回文
输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。(不含空格)
输入格式:
先输入字符串的长度,不超过100个字符长度,回车,然后依次输入字符,以回车结束字符串输入。
输出格式:
如果输入字符串中含空格,则输入字符串后回车,显示"入栈不成功",若字符串无空格,回车后,若是回文,则输出"此字符串是回文串",否则输出"此字符串不是回文串"。
输入样例:
在这里给出一组输入。例如:
5
12321
输出样例:
在这里给出相应的输出。例如:
此字符串是回文串
include<bits/stdc++.h>
define MAX 100
using namespace std;
typedef struct{
char *base;
char *top;
int stacksize;
}SqStack;
void InitStack(SqStack &s){
s.base=new char[MAX];
if(!s.base)
exit(0);
s.top=s.base;
s.stacksize=MAX;
}
void Push(SqStack &s,char e){
if(s.top-s.bases.stacksize)
return ;
if(e' '){
printf("入栈不成功");
exit(0);
}
s.top++=e;
}
char PoP(SqStack &s,char &e){
if(s.top==s.base)
return 0;
return e=--s.top;
}
int main(){
char data[MAX];
int n;
cin>>n;
getchar();
for(int i=0;i<n;i++){
data[i]=getchar();
}
SqStack s;
InitStack(s);
for(int i=0;i<n;i++){
Push(s,data[i]);
}
for(int i=0;i<n;i++){
char e;
if(data[i]!=PoP(s,e)){
printf("此字符串不是回文串");
return 0;
}
}
printf("此字符串是回文串");
}