// program2 .cpp
#i nclude<iostream.h>
#i nclude"astack.h"
void dblank(char *,char *);
void main(){
const int TRUE=1,FALSE=0;
Stack S;
char palstring[80],dblankstring[80],ch;
int i=0;
int ispalindrome=TRUE;
for(int i=0;(j<80)&&((ch=getchar())!EOF)&&(ch!='\n');j++)
palstring[j]=(char)ch;
paltring[j]='\n';
//input a string,and with '0'end
dblank(palstring,dblankstring);
while(dblankstring
!=0){
S.Push(dblankstring);
i++;
}
while(!S.StackEmpty()){
ch=S.S.Pop();
if(ch!=dblankstring){
ispalindrome=FALSE;
break;
}
i++;
}
if(ispalindrome)
cout<<'\''<<palstring<<'\''<<"is apalindrome"<<endl;
else
cout<<'\''<<palstring<<'\''<<"is not apalindrome"<<endl;
}
void dblank(char * str,char * dblankstr){
char * pstr;
char * pdblankstr;
pstr=str;
pdblankstr=dblankstr;
while(*pstr!='\0'){
if(*pstr!='b'){
* dblankstr=* pstr;
dblankstr++;
}pstr++;
}
*dblankstr='\0';
}
// astack.h
#i nclude<iostream.h>
#i nclude<stdlib.h>
const int MaxSize=50;
class Stack{
private:
char slist[MaxSize];
int top;
public:
Stack(void){top=0; };
~Stack(void){};
void Push(const char &item);
char Pop(void);
int StackEmpty(void) const{ return top==0;};
int StackFull(void) const{return top==MaxSize;};
};
void Stack:
ush(const char&item){
if(top==MaxSize)
cout<<"STACK OVERFLOW!"<<endl;
else {
slisr[top]=item;
top++;
}
}
char Stack:
op(void){
if(top==0){
cout<<"an empty stack"<<endl;
return 0;
}
top--;
return slist[top];
}