要求:采用栈和队列的方法检测并输出一个单词是否为回文
#include <cstdlib>
#include <cstring>
#include <iostream>
//队列
typedef char QElemType;
typedef struct {
QElemType *base; //指向动态分配的数组中的元素
int front; //记录队列头
int rear; //记录队列尾
}SqQueue;
//栈
#define MaxSize 200
typedef struct {
char data[MaxSize];
int top;
}Stack;
//队列
void InitQueue(SqQueue &Q){
//构造一个空队列Q
Q.base = (QElemType *)malloc(sizeof(QElemType)*MaxSize); //申请一段长度为MaxSize*sizeof(int)的连续空间,用Q->base存放
if(!Q.base) exit(1); //验证,Q不为空,返回1
Q.front = Q.rear = 0;
}
void EnQueue(SqQueue &Q, QElemType e){
//插入的元素e为Q的新的队尾元素
if((Q.rear+1) % MaxSize == Q.front) exit(1);
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1) % MaxSize;
}
void DeQueue(SqQueue &Q){
//若队列不空,则删除Q的队头元素,可以用e返回其值
if(Q.front == Q.rear)
exit(1); //返回1,exit为C++的退出函数,声明于stdlib.h中,对于C++其标准的头文件为cstdlib
//e=Q.base[Q.front];
Q.front = (Q.front+1) % MaxSize;
}
char GetHead(SqQueue &Q){
//返回队头元素
return Q.base[Q.front];
}
//栈
int InitStack(Stack &stack){
stack.top=-1;
}
int push(Stack &S, char x) /*将x置入S栈新栈顶*/
{
if(S.top == MaxSize -1)
return false;
else{
S.top++;
S.data[S.top]=x;
return true;
}
}
int pop(Stack &S, char &x) /*将栈S的栈顶元素弹出,放到x中*/
{
if(S.top==-1)
return false;
else{
x = S.data[S.top];
S.top--;
return true;
}
}
int compare(char a, char b){
if (a == b) return 0;
if (a != b) return 1;
}
int main(){
using namespace std;
Stack stack;
SqQueue queue