c语言中括号匹配_括号匹配问题 栈c++语言

c语言中括号匹配_括号匹配问题 栈c++语言c语言 想要输入一个括号,编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号….编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号.以下文字资料是由(历史新知

c语言 想要输入一个括号,编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号….   编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   
d04740fbf2d0b4bab0cf427c404a2d45.png   编写一个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

(0)
上一篇 2024年 9月 10日 下午8:24
下一篇 2024年 9月 10日 下午8:28

相关推荐

关注微信