数据结构 — 3.模式匹配

来源:互联网 发布:淘宝怎么买医疗器械 编辑:程序博客网 时间:2024/06/06 15:00

【问题描述】试编写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如"序列1&序列2"模式的字符序

列. 其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序.例如,"a+b&b+a"是属于该模式的字符序列则输

出yes,而"1+3&3-1"则输出no.

【样例输入】a+b&b+a@

【样例输出】yes


/* 顺序栈*/#include<stdio.h>#include<stdlib.h>//栈容量#define MAXSIZE 1024//顺序栈typedef struct{char *base;char *top;int n;}SqStack;/*SqStack_Push*/int SqStack_Create(SqStack &a){//分配内存char m;a.base = (char*)malloc(MAXSIZE*sizeof(char));//判断内存是否分配成功if(!a.base)exit(1);//初始化a.top = a .base;a.n = MAXSIZE;//入栈m = getchar();while(m != '&'){//是否超栈容量if(a.top-a.base >= a.n){a.n += a.n;a.base = (char*)realloc(a.base,a.n*sizeof(char));}//入栈a.top++;*a.top = m;m = getchar();}return 0;}int SqStack_Pop(SqStack a){char x;x=getchar();//出栈操作while(a.top!=a.base && x!='@'){if(x!=*a.top){printf("no");return 0;}a.top--;x=getchar();}if(a.top==a.base)printf("yes");else printf("no");return 0;} //主函数int main(){SqStack L;SqStack_Create(L);SqStack_Pop(L);return 0;}


0 0
原创粉丝点击