c语言 想要输入一个括号,编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号…. 编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号. #include using namespace std;#define STACK_INT_SIZE 100#define STACKINCREMENT 10#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;typedef struct { SElemType *base; SElemType *; int stacksize;}SQStack;Status INitStack(SQStack &S){ S.base=new SElemType[STACK_INT_SIZE]; if(!S.base) { cout<=S.stacksize) { S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base) { cout<>e; if(e!='(‘&&e!=’)’&&e!='[‘&&e!=’]’&&e!='{‘&&e!=’}’) { cout< 如何用c语言编写一个括号匹配程式 #include void main() { int Token = 0; char s[50]; bool IsRight = false; cout< cin>>s; for(int i = 0;s[i]!=’0′;i++) { if(s[i]=='(‘){ Token++; } if(s[i]==’)’){ Token–; if(Token<0) break; } } if(Token!=0) cout< else cout< cout< } c++栈的问题,写个程式解决括号的匹配问题 int Match(char *exp,int n) { int i=0; char e; SqStack *st; InitStack(st); while(i { if(exp[i]=='(‘) push(st,exp[i]); else if(exp[i]==’)’) { if(GetTop(st,e)==1) { if(e!='(‘) return 0; else Pop(st,e); } else return 0; } i++; } if(StackEmpty(st)==1) return 1; else return 0; } 急!括号匹配问题 你用了exit和malloc函式 需要新增标头档案 #include 试过了,新增标头档案后没有编译错误。 函式的 栈引数 都改成 栈指标引数 如: int initstack(sqstack S); 改成: int initstack(sqstack *S); 函式体也要做相应修改。 c++ 找错误 (括号匹配问题) #include #include const int maxsize=100;最大素个数 typedef char Datatype; class seqstack { int ; Datatype *s; public: seqstack();建构函式 ~seqstack();解构函式 void push(Datatype x); void match(char *k); }; seqstack temp; seqstack::seqstack() { =0; s=new Datatype[maxsize]; } seqstack::~seqstack() { delete []s; } void seqstack::push(Datatype x) { if(==maxsize) { cout< exit(0); } else { s[]=x; } } bool ma(char a,char b) { if((a=='(‘&&b==’)’)||(a=='[‘&&b==’]’)||(a=='{‘&&b==’}’)) return true; else return false; } void seqstack::match(char *k) { int u,v; for(int i=0;k[i]!=’0′;i++) { if(k[i]=='(‘||’)’||'[‘||’]’||'{‘||’}’) { temp.push(k[i]); ++; } } if(%2==1) { cout< } else { u=/2; v=u+1; while(u!=-1) { if(ma(s[u],s[v])) { u–; v++; } else { cout< break; } } if(u==-1) cout< } } void main() { char p[10]; cout< cin>>p; temp.match(p); } 只是修改编译错误吗? 我改好了 ,还修改了个死回圈 ,你少了一边大括号,还有case那加上了break c++ 如何在档案中匹配一个字串 如果档案不是太大(比你当前的可用剩余记忆体小),且档案中不包含“0”这样的位组,直接把档案用一个缓冲调进记忆体,然后用字串搜寻函式搜就是了; 如果档案确实太大,或者档案中可能包含“0”这样的位组,那么你需要自己编写模式匹配函式(就是与字串搜寻函式类似功能的函式,网上有类似的C++原始码,但功能还不够)。 对含0资料的适应比较简单,搜寻函式只要额外加两个缓冲区资料长度的引数传进去就行(代替以0结尾的字串处理机制)——一个主缓冲长度,一个子串长度。 而跨缓冲区的搜寻比较麻烦,因为搜寻字很可能跨在两个相邻缓冲之间,这时搜寻函式需要返回两个资讯:一是搜寻到的子串位置,二是本缓冲区内匹配了多少位组的子串(完全匹配时就是匹配了整个子串的长度);如果需要多次搜寻子串在缓冲中的所有位置,则还需要把搜寻起始位置做引数传进搜寻函式。当然,这时子串在缓冲中搜索到的各位置必须转换为档案的绝对座标才行。 跨缓冲区的搜寻,上一缓冲的最后搜寻结果(位置、已匹配长度)要带进下一缓冲的搜寻,这些必要资讯也要传进搜寻函式,因此这是个复杂而引数众多的函式。 括号匹配问题(pascal) const op1='{[ op2=’}]>)’; var s:array[1..1000] of char; ,p1,p2,l,i:longint; st:string; ch:char;bj:boolean; begin readln(st); :=0;l:=length(st); bj:=true; for i:=1 to l do begin ch:=st[i]; if pos(ch,op1)<>0 then begin inc();s[]:=ch; end else if pos(ch,op2)<>0 then begin if =0 then begin bj:=false;break;end else begin p2:=pos(ch,op2); ch:=s[]; p1:=pos(ch,op1); if p1=p2 then dec() else begin bj:=false;break;end; end; end; end; if =0 and bj then writeln(‘yes’) else writeln(‘no’); end. C语言括号匹配问题 用堆叠解决。 C圆括号匹配程式问题 这程式码也太多了。。LZ你可以到我空间里参考“括号匹配”这篇文章,之前给一个提问者写的。不一定是你想要的功能,但你可以按那个思路来改。 帮忙改一下这个C++括号匹配问题 #include #include using namespace std; bool invalid(char* s) { stack st; st.empty(); while(*s!=’0′) { if(*s == ‘[‘|| *s == ‘(‘) st.push(*s); else { if(*s == ‘]’) { if(st.() != ‘[‘) { return true; } else st.pop(); } if(*s == ‘)’) { if(st.()!='(‘) { return true; } else st.pop(); } } s++; } return !st.empty(); } int main() { int i; char a[50]; cin>>a; if(invalid(a)) cout< else cout< cin>>i; return 0; } 分页: 1 23
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/33253.html