用队列实现形如a+b@b+a#的中心对称字符的检验
来源:互联网 发布:哪些网络游戏有mac版 编辑:程序博客网 时间:2024/04/29 18:51
用队列实现形如a+b@b+a#的中心对称字符的检验
我用网上提供的一种思想,用循环队列实现了这个操作,具体代码如下。
/*函数名match,严格来说它并不是Status型*/Status match(char *a){SqQueue q; //定义循环队列qchar b,c;char*p=a;InitQueue(q); //初始化队列q while(*p!='@'){ //不断进行入队操作,遇到@停止 EnQueue(q,*p); p++;}p++;while(*p!='#'){ EnQueue(q,*p); p++;}while (QueueLength(q) != 0) { if (!DeQueuefront(q, b))return OVERFLOW; if (!DeQueuerear(q, c))return OVERFLOW; //如果队长不为0,分别取队头元素与队尾元素进行比较 if (b != c) { return FALSE; } //若不等返回FALSE,相等则返回OK} if (q.rear == q.front) { return OK; }}
下面把循环队列的基本操作中本程序用到的函数再贴一遍
Status InitQueue (SqQueue &Q){ //初始化循环队列 Q.base=(QElemType * )malloc(MAXQSIZE*sizeof(QElemType)); if(!Q.base)exit(OVERFLOW); Q.front=Q.rear=0; return OK;}int QueueLength(SqQueue Q){ //返回队长函数 return(Q.rear-Q.front+MAXQSIZE) % MAXQSIZE;}Status EnQueue(SqQueue &Q,QElemType e){ //入队函数 if((Q.rear+1)%MAXQSIZE == Q.front)return ERROR; Q.base[Q.rear]=e; Q.rear =(Q.rear+1)%MAXQSIZE; return OK;}Status DeQueuefront(SqQueue &Q,QElemType &e){ //返回队头值函数 if(Q.front ==Q.rear) return ERROR; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXQSIZE; return OK; }Status DeQueuerear(SqQueue &Q,QElemType &e){ //返回队尾值函数 if(Q.front ==Q.rear) return ERROR; Q.rear = (Q.rear - 1) % MAXQSIZE; e=Q.base[Q.rear]; return OK; }
阅读全文
2 0
- 用队列实现形如a+b@b+a#的中心对称字符的检验
- 用栈实现形如a+b&b+a@的中心对称字符的检验
- 请输出开如"1A 2B 3C ........26Z"的字符序列,用集合实现
- 如何用宏定义的方式实现MAX(A,B),MAX(A,B,C),MAX(A,B,C,D)
- 用PYTHON实现一个扁平化的字典,如{'a': {'b': '1'}}扁平化处理后变成{'a.b': 1}?
- 用栈实现中心对称符号的检验!一
- 消息队列的简单实现(客户端A,客户端B)
- 高精度 a*b的实现
- a&&b与a&b的区别
- A+B的问题
- XTU的A+B
- 人见人爱的a^b
- 大数的a+b
- A/B的困扰
- 不一样的A+B
- 恶心的A+B
- 困难的A+B
- A-B的绝对值
- Java的初始化块
- 一位资深程序员大牛给予Java初学者的学习路线建议
- 表的创建与管理
- 设计模式中类的关系
- MySQLWorkbench安装及创建
- 用队列实现形如a+b@b+a#的中心对称字符的检验
- mp3编码--PCM转MP3,PCM编码为MP3,如何实现多路同时MP3编码-VC,MFC实现---QQ35744025
- 第一节、认识webPack
- NP,NP-heard,P,NP完全问题
- Rocks Cluster中计算节点名称的更改
- 创建项目工程流程
- 卸载CentOS7-x64自带的OpenJDK并安装Sun的JDK8的方法
- Python
- MTK 11A编译环境搭建