首页 > 其他分享 >栈3: 括号匹配

栈3: 括号匹配

时间:2024-04-18 20:11:10浏览次数:17  
标签:LinkStack 匹配 int mychar MyChar char 括号 stack

栈3: 括号匹配


自定义数据结构

typedef struct MYCHAR{
    LinkNode node;
    char* pAddres; //数据域
    int index; //
} MyChar;

判断左右括号

int IsLeft(char c){
    return c=='(';
}

int IsRight(char c){
    return c==')';
}

创建栈结点

MyChar* CreatMyChar(char *p){
    MyChar* mychar = (MyChar*)malloc(sizeof(MyChar));
    mychar->pAddres = p;
    return mychar; //返回指针
}

提示匹配错误的信息

void ShowError(char* str, int pos){
    cout  << str << endl;
    for (int i = 0; i < pos; i++){
        cout << " ";
    }
    cout << "↑" << endl;
}

测试

int main(){
    int index = 0;
    //创建栈容器
    LinkStack* stack = Init_LinkStack();
    //创建数据
    char* str = "1+2+6(dsf))dfsflp((sdfs)";
    char* p = str;
    //遍历
    while(*p!='\0'){
        //左括号进栈
        if(IsLeft(*p)){
            Push_LinkStack(stack,(LinkNode*)CreatMyChar(p)); //强转...?
        }
        //右括号出栈
        if(IsRight(*p)){
            if(stack->size==0) {
                ShowError(str,index);
                system("pause");
            }
            MyChar* mychar = (MyChar*)Top_LinkStack(stack);
            if(IsLeft(*(mychar->pAddres))){
                Pop_LinkStack(stack);
            }else{
                ShowError(str,index);
                system("pause");       
            }
        }
        p++;
        index++;
    }
    //检查栈是否为空
    if(stack->size==0) cout << "yes" << endl;
    else ShowError(str,index);

    system("pause");
    return 0;
}

标签:LinkStack,匹配,int,mychar,MyChar,char,括号,stack
From: https://www.cnblogs.com/HIK4RU44/p/18144308

相关文章

  • GridControl列自动匹配宽度(转)
    //自动调整所有字段宽度this.gridView1.BestFitColumns();//调整某列字段宽度this.gridView1.Columns[n].BestFit(); 大多是网上零散找到的,小部分是自己使用的时候自己遇到的。 XtraGrid的关键类就是:GridControl和GridView。GridControl本身不显示数据,数据都是显示在Grid......
  • 解决加载GPT2(Tensorflow预训练模型)的Linear权重到PyTorch的Linear权重 形状不匹配(互为
    解决报错内容:RuntimeError:Error(s)inloadingstate_dictforPyTorchBasedGPT2:sizemismatchfortransformer.h.0.attn.c_attn.weight:copyingaparamwithshapetorch.Size([768,2304])fromcheckpoint,theshapeincurrentmodelistorch.Size([2304,768]).........
  • 洛谷题单指南-数学基础问题-P2651 添加括号III
    原题链接:https://www.luogu.com.cn/problem/P2651题意解读:计算能否在除法a1​/a2​/a3​/.../an​式子中加括号,将一部分数变成分子,使得除法结果是整数。解题思路:在a1​/a2​/a3​/.../an​中,无论怎么加括号,a1一定是分子,a2一定是分母,那么可以判断把a3...an都作为分子,是否能除尽......
  • vue3中动态添加路由刷新无法正确匹配路由组件
    1.问题动态添加路由之后,页面重新匹配路由,匹配到了设置的404notfound页面该页面是在路径无法匹配到的时候才会跳转的页面2.问题查找在前置路由守卫打印to发现当前地址匹配到的组件是配置的404页面并且此时的动态路由中是含有改路由地址的3.问题原因在页面刷新时......
  • 代码随想录算法训练营第9天 | 字符串(KMP算法) 28. 找出字符串中第一个匹配项的下标
    leetcode28.找出字符串中第一个匹配项的下标题目28.找出字符串中第一个匹配项的下标给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。解题思路实现代......
  • Qt QCharts绘制柱状图,柱高和y轴数据刻度不匹配
    QCharts绘制柱状图,柱高和y轴数据刻度不匹配1//在项目pro文件中添加以下内容2QT+=charts34//在.h文件中添加以下内容,注意:需要将头文件及命名空间添加到ui命名空间之前,否则将提示错误5#include<QtCharts/QChartView>6#include<QtCharts/QBarSerie......
  • 关于转义符 \ 在php正则中的匹配问题
    今天做题遇到一个很经典的问题,记录一下,先看一段代码<?php$str,=,"\\";$pattern,=,"/\\/";if(preg_match($partern,$str,$arr)){,,,,echo,"success";,,,,print_r($arr);}else{,,,,echo,"false";}看到这段代码的师傅们,思考一下,会输出success还是false输出fals......
  • 探秘KMP算法:解密字符串匹配的黑科技
    KMP算法在正式进入KMP算法之前,不得不先引经据典一番,因为直接去理解KMP,你可能会很痛苦(别问,问就是我也痛苦过)。所以做好前面的预热工作非常非常重要,为了搞明白KMP,在没见到KMP算法的完整代码之前,请耐心的将前面的东西看完。一些相关的概念学习KMP算法,得明白它主要得作用......
  • POI 匹配单元格内容\n 替换为换行
    根据\n进行分割,取第一个run,并将分割后的元素作为其他run拼起来run.addBreak(); //换行1/**2*匹配单元格内容\n替换为换行3*@paramcell4*/5privatevoidaddBreakInCell(XWPFTableCellcell){6if(cell.getText()......
  • 每日一题: 有效括号
    面对这个括号匹配的问题,我开始也有点迷茫,隐约觉得可以用栈(Stack)来解决。一起先来看看原题吧:Givenastringscontainingjustthecharacters'(',')','{','}','['and']',determineiftheinputstringisvalid.Aninputstringisva......