算法思路: 与上一题差不多,就是在出栈的时候要知道出栈的元素是哪个,我们在pop(STACK *ps,char * val)函数中用*val保存出栈的值,在调用完pop()后,判断一下val的值是不是对应的相反括号即可 溢出判断也是跟上一题一样,如果栈里面是空的此时遇到 ‘)’ 或者‘]’会返回false,直接返回false输出Wrong,栈里面...
c判断括弧是否匹配 这里我没有用堆栈。直接用一个数组input[SIZE]接收用户的输入,在遍历数组,对数组进行操作。已经匹配好的括弧直接用#号覆盖,最后遍历数组。如果数组只有#号,没有其他元素,则匹配。否则不匹配。 1 /* 2 *判断括弧是否匹配 3 */ 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 #inclu...
这道题用模拟栈,就可以轻松解决。 【源代码】 1#include<cstdio>2#include<iostream>3#include<cstring>4usingnamespacestd;5charstr[10000];6intstack[1000];//用1代表(,2代表),3代表[,4代表]7intmain()8{9inttop=-1;10cin>>str;11intlen=strlen(str);12for(inti=0;i<len;i++)13{14if(str[...
bool check(string s) { st.push('#'); // 栈底为#,避免越界。这样每次pop时,就不需要盘算st.empty()了 int len = s.size(); for (int i = 0; i < len; i++) { char c = s[i]; if (c == ')') { // 是右小括号")" if (st.top() != '(') { // 没有与它匹配的"...
//p为栈 p.push('#'); //栈底为#,避免越界 for(inti=0;i>s; if(check(s))cout<<"OK"<<endl; elsecout<<"Wrong"<<endl; return0; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。 现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配? 输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 ...
【输入】输入仅一行字符(字符个数小于255)。【输出】匹配就输出 “OK” ,不匹配就输出“Wrong”。【输入样例】[(])【输出样例】Wrong 【源程序】#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<...
假设在表达式中出现下列匹配情况,则为不正确的格式。 [(])或([())或(()]) 结论:检验括号是否匹配的方法可用期待的急迫程度这个概念来描述。 例如,考虑下列括号序列的匹配过程: [ ( [ ] [ ] ) ] 1 2 3 4 5 6 7 8 可见,上述括号的匹配过程正好类似于入栈和出栈的过程。点...
匹配就输出 “OK” ,不匹配就输出“Wrong”。【输⼊样例】[(])【输出样例】Wrong 代码:#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std;char a[256],b[256];//⼀个输⼊的数组,⼀个栈 int main(){ gets...