精华内容
下载资源
问答
  • c++括号匹配

    2014-12-05 15:26:05
    c++括号匹配
  • c++括号匹配问题c++括号匹配问题c++括号匹配问题c++括号匹配问题c++括号匹配问题c++括号匹配问题c++括号匹配问题c++括号匹配问题
  • C++ 括号匹配

    千次阅读 2016-04-07 14:32:29
    主要是利用栈进行入栈出栈匹配,代码如下: #include #include using namespace std; #define STACK_SIZE 100 struct Stack { char strStack[STACK_SIZE]; int top; }; void InitStack(Stack &s) { s...

    主要是利用栈进行入栈出栈匹配,代码如下:


    #include <iostream>
    #include <string.h>
    
    using namespace std;
    
    #define STACK_SIZE 100
    
    struct Stack
    {
    	char strStack[STACK_SIZE];
    	int top;
    };
    
    void InitStack(Stack &s)
    {
    	s.top = -1;
    }
    
    char Push(Stack &s, char c){
    	if (s.top + 1 > STACK_SIZE)
    	{
    		return 0;
    	}
    
    	s.top = s.top + 1;
    	s.strStack[s.top] = c;
    	return c;
    }
    
    bool IsEmpty(Stack &s)
    {
    	if (s.top <= -1)
    	{
    		return true;
    	}
    
    	return false;
    }
    
    char Pop(Stack &s){
    	if (IsEmpty(s)){
    		return 0;
    	}
    	
    	char c = s.strStack[s.top];
    	s.top = s.top - 1;
    	return c;
    }
    
    bool Match(char *str)
    {
    	Stack stack;
    	InitStack(stack);
    	int strLength = strlen(str);
    
    	char c;
    	char popC;
    	for (int i = 0; i < strLength; ++i)
    	{
    		char c = str[i];
    		switch (c)
    		{
    		case '(':
    		case '[':
    		case '{':
    			Push(stack, c);
    			break;
    		case ')':
    			popC = Pop(stack);
    			if (popC != '(')
    			{
    				return false;
    			}
    			break;
    		case ']':
    			popC = Pop(stack);
    			if (popC != '[')
    			{
    				return false;
    			}
    			break;
    		case '}':
    			popC = Pop(stack);
    			if (popC != '}')
    			{
    				return false;
    			}
    			break;
    		default:
    			break;
    		}
    	}
    
    	if (IsEmpty(stack))
    	{
    		return true;
    	}
    
    	return false;
    }
    
    int main()
    {
    	char str[STACK_SIZE];
    	cout << "请输入字串:" << endl;
    	cin >> str;
    	bool bMatch = Match(str);
    	if (bMatch)
    	{
    		cout << "匹配成功." << endl;
    	}
    	else {
    		cout << "匹配失败." << endl;
    	}
    
    	system("PAUSE");
    	return 0;
    }

    如果有优化的地方,欢迎指教。
    展开全文
  • C++括号匹配问题

    2020-05-27 12:26:35
    4.遍历结束后判断栈是否为空:若为空则匹配,不为空不匹配 bool isMatch(string str) { //1.建立一个栈 Stack<char> s; //2.遍历字符串 for(int i=0;i<str.length();i++) { //2.1如果当前

    第一种算法

    用栈来解决:
    1.建立一个栈
    2.遍历字符串如果是左括号就压栈
    3.如果是有括号:判断此时栈是否为空
    3.1如果为空则不匹配
    3.2如果不为空则弹出一个元素
    4.遍历结束后判断栈是否为空:若为空则匹配,不为空不匹配

    bool isMatch(string str)
    {
        //1.建立一个栈
        Stack<char> s;
        //2.遍历字符串
        for(int i=0;i<str.length();i++)
        {
            //2.1如果当前字符为左括号:将左括号压栈
            if(str[i]=='(')
            {
                s.push(str[i]);
            }
            //2.2如果当前字符为右括号:
            if(str[i]==')')
            {
                //2.2.1如果为空则返回括号不匹配
                if(s.isEmpty()) return false;
                //2.2.2如果栈不为空,从栈中弹出一个左括号.
                else{
                    s.pop();
                }
            }
    
        }
    
        //3.遍历结束后如果栈中为空则返回括号匹配,如果不为空则不匹配
        if(s.isEmpty()) return true;
        else return false;
    }
    

    第二种算法

    1.设置一个整数sum初始化为0
    2.遍历字符串:如果为左括号则sum++;如果为右括号则sum–
    3.遍历结束后如果sum为0则匹配,不为0不匹配

    bool ismatch(string str)
    {
        int sum=0;
        for(int i=0;i<str.length();i++)
        {
            if(str[i]=='(') sum++;
            if(str[i]==')') sum--;
        }
        if(sum==0) return true;
        else return false;
    }
    
    展开全文
  • C++ 括号匹配问题

    2011-03-16 16:20:16
    供数据结构初学者参考,相互交流。也许有些地方写的不好,也许你有更好的想法,希望你不要吝啬,我们可以共同的学习进步。
  • c/c++括号匹配

    2016-10-19 13:37:19
    看到一道题关于数据结构的括号匹配的问题,要求使用栈进行操作,如果遇到到的是左括号就进栈,如果读入的是右括号就把前一个入栈的左括号取出出栈,比较他们两个是否匹配,代码如下: #include #include #...

    看到一道题关于数据结构的括号匹配的问题,要求使用栈进行操作,如果遇到到的是左括号就进栈,如果读入的是右括号就把前一个入栈的左括号取出出栈,比较他们两个是否匹配,代码如下:



    #include <stdio.h>  
    #include <stdlib.h>     
        
    #define S_SIZE 100   //栈的空间大小  
    
    struct SqStack{  
        int *base; //栈底  
        int *top;  //栈顶  
        int stacksize;   //栈当前的存储空间  
    };  
    //声明栈要使用的函数 
        void InitStack(SqStack &S);//初始化空栈  
        int StackEmpty(SqStack S);//判空  
        void push(SqStack &S,int e);//进栈  
        void pop(SqStack &S,int &e);//出栈  
    int main()  
    {
        
        SqStack s;//定义一个栈  
        InitStack(s);  //初始化栈 
        char ch[100],*p;
    	int e;  
        p=ch;  
        printf("输一个含义有()[]{}的括号表达式:\n");  
        gets(ch);  
        while(*p)  
        {   
            switch (*p)  
            {  
            case '{':  
            case '[':  
            case '(': push(s,*p++);break;//只要是左括号就入栈  
            case '}':  
            case ']':  
            case ')':pop(s,e);  
                     if ((e=='{' && *p=='}') ||(e=='[' && *p==']') || (e=='(' && *p==')'))  
                     p++;  
                     else  
                     {
    				 printf("括号不匹配!");
    				 exit(1);
    				 }  
                     break;  
            default :p++;//其他字符就跳过 
            }  
        }  
        if (StackEmpty(s))  
          printf("括号匹配成功");  
        else  
          printf("缺少右括号!");  
        printf("\n"); 
    	
    	return 0; 
    }  
    void InitStack(SqStack &S) //初始化空栈   
    {S.base=new int[S_SIZE]; 
    S.stacksize=S_SIZE;  
    S.top=S.base;
    }  
    int StackEmpty(SqStack S)//判空  
    {  
        if(S.base==S.top)  
            return 1;  
        else  
            return 0;  
    }  
    void push(SqStack &S,int e) //进栈   
    {
        if(S.top-S.base>=S.stacksize)//判满  
        {
    	printf("栈满\n");
    	exit(1); 
    	}  
        *(S.top)=e;  
        S.top++;        
    }  
    void pop(SqStack &S,int &e)  //出栈 
    { 
        if(S.base!=S.top)  
        {
    	S.top--;  
        e=*S.top;
    	}  
    } 


    展开全文
  • C++括号匹配算法实现

    2010-09-15 19:29:48
    C++实现,识别依次读入的一个以@`为结束符的算术表达式中可以包含三种符号; 圆括号"("和")"、方括号"["和"]"和花括号"{"和"}",且这三种括号可按任意的次序嵌套 使用如:…[…{…}…[…]…]…[…]…(…)…)。判别...
  • c++括号匹配问题

    2020-04-13 17:44:42
    输出所输入内容中的括号对的对数,并且输出相应括号对的序号。 输出内容应该如下: 3 0 2 5 10 7 8 此题要从栈入手! #include <iostream> #include <vector> #include <stack> #include<...
    问题:
    (1)23(4()5)6
    输出所输入内容中的括号对的对数,并且输出相应括号对的序号。
    输出内容应该如下:
    3
    0 2
    5 10
    7 8
    

    此题要从栈入手!

    #include <iostream>
    #include <vector>
    #include <stack>
    #include<string>
    #include<algorithm>
    using namespace std;
    
    
    int main() {
    	string s;
    	cin >> s;
    
    	stack<int>st;
    	
    	vector<pair<int,int > > res;
    	int count = 0;
    	for (int i = 0;i < s.size();i++)
    	{
    		if(s[i]=='(')
    		{
    			st.push(i);
    			count++;
    		}
    		if (s[i] == ')')
    		{
    			pair<int, int> p;
    			int tmp = st.top();
    			st.pop();
    			p.first = tmp;
    			p.second = i;
    			res.push_back(p);
    			//cout << tmp << " " << i << endl;
    
    		}
    		
    
    	}
    	cout << count << endl;
    	for (int i = 0;i < res.size();i++)
    	{
    		cout << res[i].first << " " << res[i].second << endl;
    	}
    	
    
    	system("pause");
    	return 0;
    }
    
    展开全文
  • C++ 括号匹配 栈实现

    2020-03-04 11:38:04
    3.若为又括号“),],}”,则与栈顶元素进行匹配: ①:若匹配,则弹出栈顶元素; ②:若不匹配,则该序列不合法. 4.若遍历结束,栈空则合法,否则不合法. 操作函数 void InitStack(sqStack &s);//初始化栈 void ...
  • C++括号匹配的检验

    千次阅读 2018-12-11 19:37:57
    假设表达式中包含三种括号,其嵌套顺序任意,即[]({[]})、([({})])为正确格式,{{[])、}()[]为不正确的格式,检查括号是否匹配,基于C++实现,使用STL实现的stack进行实现; #include &lt;iostream&gt; #...
  • C++括号匹配代码实现

    千次阅读 2019-02-20 22:17:58
    #include &lt;iostream&gt; #include &lt;cstring&gt; ...//判断括号是否匹配 bool isMatch(string s) { stack&lt;char&gt; st; int len = s.size(); for (int i = ...
  • win32控制台应用程序 vs2010以上编译通过 输入含(){}[]的表达式 判断括号是否正确匹配 大连理工大学软件学院数据结构上机题
  • C++ 括号匹配的检验

    千次阅读 2018-04-26 16:32:14
    #include&lt;iostream&gt;#include&lt;string&gt;#include&lt;stack&gt;using namespace std;stack&lt;char&gt; s;int main(){ bool state=true; string exp;......
  • C++括号匹配程序

    2013-03-29 17:05:45
    v1.0版 #include #include #include using namespace std; int main() { string s; cout ; cin >> s; stack cstk; for(int i= 0; i (); ++i) { char tmp = s
  • 括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例一: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出:...
  • c++匹配括号,用英文输入(()匹配失败,而用中文输入(()却匹配成功???
  • 输入一串括号,包括圆括号和方括号,()[],判断是否匹配,即([]())或[([][])]为匹配的正确的格式,[(])或([())为不匹配的格式。 #include<iostream>#include<string>#include<stack>using ...
  • 该程序的主要是利用栈先进后出的特点进行括号匹配,如果匹配成功,就反回正确正确的判断,否则,返回错误的判断。
  • #include #include #include using namespace std;short judge(char c) { switch(c) { case (: case [: case {: return -1;//开放符号,即左括号 case ): case ]: case }: return 1;
  • C++实现括号匹配

    千次阅读 2019-08-12 10:04:59
    位置0和位置10的右括号匹配,位置3的左括号和位置7的有括号匹配。 2.求解策略 如果从左至右地扫描一个字符串,那么每一个右括号都与最近扫描的那个未匹配的左括号相匹配。从左到右地扫描过程中,将扫描到的左括号...
  • c++括号匹配

    千次阅读 2019-01-05 15:02:41
    c++括号匹配 题目描述 假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用(如:…[…{… …[…]…]…[…]…(…)…)。...
  • 括号匹配C++

    2015-12-05 00:41:15
    括号匹配:判断一段字符串括号是否匹配,就是左括号是否与右括号搭配,且括号类型要相同,且有空字符串,括号套括号等特殊情况。
  • C++语言写的数据结构括号匹配问题,数据结构课程作业。
  • c++使用堆栈实现括号匹配问题
  • C++编程,表达式括号匹配配对问题的实验报告
  • C++——括号匹配算法

    2019-03-30 21:01:35
    括号匹配算法 利用栈的LIFO的特点,我们可以进行左右括号的匹配,“()【】{}” 在右括号“)】}”左边最近的左括号必须是相对应的“(【{”,否则就不合法 每次匹配一对正确的括号,就要将其出栈,为外层的括号...
  • 括号匹配问题c++.pdf

    2021-09-14 17:01:07
    括号匹配问题c++.pdf
  • C++括号匹配堆栈

    2009-03-10 19:18:57
    关于一个括号匹配的练习题,通过对文件的读入,判断此文件内容是否符合{[()]}……对学数据结构有一定的好处。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,112
精华内容 20,444
关键字:

c++括号匹配

c++ 订阅