⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huiwen.cpp

📁 利用顺序队列验证输入的一段字符并判断是否为回文
💻 CPP
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>

const int MaxListsize=100;
const int MaxQueuesize=100;

typedef char DataType;

class SeqQueue
{
private:
	DataType data[MaxQueuesize];
	int front;
	int rear;
	int count;
public:
	SeqQueue(void){front=rear=0;count=0;}
	~SeqQueue(void){}
	void Qinsert(const DataType& item);
	DataType QDelete(void);
	DataType QFront(void)const;
	int QueueEmpty(void)const{return front==rear;}
	void ClearQueue(void){front=rear=0;count=0;}
	int GetSize(void)const{return count;}
};
void SeqQueue::Qinsert(const DataType& item)
{
	if(count==MaxQueuesize)
	{
		cout<<"队列已满"<<endl;
		exit(0);
	}
	data[rear]=item;
	rear=(rear+1)%MaxQueuesize;
	count++;
}
DataType SeqQueue::QDelete(void)
{
	DataType temp;
	if(count==0)
	{
		cout<<"队列已空"<<endl;
			exit(0);
	}
	temp=data[front];
	front=(front+1)%MaxQueuesize;
	count--;
	return temp;
}
DataType SeqQueue::QFront(void)const
{
	if(count==0)
	{
		cout<<"队列空"<<endl;
			exit(0);
	}
	return data[front];
}


 class SeqStack
{
private:
	DataType data[MaxListsize];
	int top;
public:
	SeqStack(void){top=0;}    //构造函数
	~SeqStack(void){}   //析构函数

	void Push(const DataType& item);   //压栈,压入item	
	DataType Pop(void);  //退栈
	DataType Peek(void)const;  //读出栈顶的元素
	int StackEmpty(void)const  //判空
	{
		return(top==0);
	}
	int GetSize(void)const{return top;}	//输出元素的个数	
	void ClearStack(void){top=0;}  //清空栈

};
//---------------------------------
void SeqStack::Push(const DataType& item)
{	
	if(top==MaxListsize){
		cout<<"堆栈已满!"<<endl;
		exit(0);
	}
  data[top]=item;
  top++;
}

//--------------------------------------------
DataType SeqStack::Pop(void){
	if(top==0){
		cout<<"堆栈已空!"<<endl;
		exit(0);
	}
	top--;
	return data[top];
}
//--------------------------------------------
DataType SeqStack::Peek(void)const{
	if(top==0){
		cout<<"堆栈空!"<<endl;
		exit(0);
	}

	return data[top-1];
}



void main(void){
	SeqStack mystack;
	SeqQueue myqueue;
	char str[80];
	cin.getline(str,80);
	int h=strlen(str);
	for(int i=0;i<h;i++)
	{
		myqueue.Qinsert(str[i]);
		mystack.Push(str[i]);
	}
	while(!myqueue.QueueEmpty())
	{
		if(myqueue.QDelete()!=mystack.Pop())
		{
			cout<<"no"<<endl;
			return;
		}
	}
	cout<<"yes"<<endl;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -