数据结构。栈+队列判断字符序列是否属于回文数字或回文字符,非常详细

2023-05-16

精髓,请仔细体会

bool test(SqQueue &Q,Stack &s){
	char c;
	while((c=getchar())!='@'){	//因为栈是先进后出 
		push_Stack(s,c);		//队列是先进先出 
		en_Queue(Q,c);			//所以可以把二者的出元素过程看做回文 
	}
	printf("\n");
	while(Q.front != Q.rear){
		if(pop_Stack(s) != de_Queue(Q))//一旦有一个不相等,就说明不是回文 
			return false;
	}
	return true;
}
#include<iostream>
#include<stdio.h>
#define MAXSIZE 50
using namespace std;
typedef struct{
	char data[MAXSIZE];
	int front,rear;
}SqQueue;
typedef struct{
	char data[MAXSIZE];
	int top;
}Stack;
void init_Queue(SqQueue &Q){
	Q.front = Q.rear = 0;
}
void init_Stack(Stack &S){
	S.top = -1;
} 
bool en_Queue(SqQueue &Q,char b){
	if((Q.rear+1)%MAXSIZE == Q.front){
		printf("队列满");
		return false; 
	}
	
	Q.data[Q.rear] = b;          
	printf("入队元素:%c  ",b);    		
	Q.rear = (Q.rear+1)%MAXSIZE;
			
	return true;
}
bool push_Stack(Stack &S,char a){

	S.data[++S.top] = a;
	printf("入栈元素:%c  ",a);
	return true;
}
char de_Queue(SqQueue &Q){
	char t;
	if(Q.front == Q.rear){
		printf("队列空");
		return false; 
	}
	t = Q.data[Q.front];
	printf("出队元素:%c  ",t);   
	Q.front = (Q.front+1)%MAXSIZE;
	return t;
}
char pop_Stack(Stack &S){
	if(S.top == -1){
		return 0;
	}
	char t;
	t = S.data[S.top--];
	printf("出栈元素:%c  ",t); 
	return t;
}
bool test(SqQueue &Q,Stack &s){
	char c;
	while((c=getchar())!='@'){	//因为栈是先进后出 
		push_Stack(s,c);		//队列是先进先出 
		en_Queue(Q,c);			//所以可以把二者的出元素过程看做回文 
	}
	printf("\n");
	while(Q.front != Q.rear){
		if(pop_Stack(s) != de_Queue(Q))//一旦有一个不相等,就说明不是回文 
			return false;
	}
	return true;
}
int main(){
	SqQueue Q;
	Stack S;
	init_Queue(Q);
	init_Stack(S);
	cout<<test(Q,S);
	return 0;
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构。栈+队列判断字符序列是否属于回文数字或回文字符,非常详细 的相关文章

随机推荐