括号匹配问题
Python实现三种括号的匹配

Python实现三种括号的匹配括号匹配问题是指在给定字符串中,判断括号是否匹配,也就是每个左括号是否有与之匹配的右括号。
常见的括号有三种:小括号"("、中括号"[]"和大括号"{}"。
在Python中,我们可以使用栈来解决括号匹配问题。
具体的实现思路如下:1.创建一个空栈用于存储遍历到的左括号。
2.遍历给定的字符串,对于每个字符执行以下操作:a.如果是左括号,则将其压入栈中。
b.如果是右括号,则判断栈是否为空。
- 如果栈为空或栈顶元素与当前字符不匹配,则返回False,表示括号不匹配。
-如果栈不为空且栈顶元素与当前字符匹配,则弹出栈顶元素。
3.遍历完字符串后,判断栈是否为空。
- 如果栈为空,则说明所有括号都匹配,返回True。
- 如果栈不为空,则说明还有左括号没有匹配右括号,返回False。
下面是具体实现的代码:```pythondef bracket_match(s):stack = []left_brackets = "([{"right_brackets = ")]}"bracket_map = {")": "(", "]": "[", "}": "{"}for char in s:if char in left_brackets:stack.append(char)elif char in right_brackets:if not stack or stack[-1] != bracket_map[char]: return Falsestack.popreturn len(stack) == 0#测试代码print(bracket_match("(")) # Trueprint(bracket_match("({})")) # Trueprint(bracket_match("[(")) # Falseprint(bracket_match("({[]})")) # Trueprint(bracket_match(")")) # False```该代码使用了一个栈存储左括号,如果遇到右括号则与栈顶元素进行匹配。
数据结构中关于括号匹配问题的算法

《数据结构》实验报告二实验内容:括号匹配学号:姓名:一、上机实验的问题和要求(需求分析):[ 题目] 假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即(()[ ])或[([ ] [ ])] 等为正确格式,[(])或(((]均为不正确的格式。
读入含圆括号和方括号的符号序列,输出“匹配”或“此串括号匹配不合法”。
二、程序设计的基本思想,原理和算法描述:本程序是在实现栈的基本操作的基础上实现其基本应用,即括号匹配问题,重点利用其“先进后出”的特性三、调试和运行程序过程中产生的问题及采取的措施:(略)四、源程序及注释[ 源程序] 程序名: 4.cpp#include "stdio.h"#include "malloc.h"#include "process.h"#define stack_int_size 8#define stackincrement 10#define overflow -2#define error 0#define ok 1typedef int status;typedef char selemtype;typedef struct{ selemtype * base;selemtype * top;int stacksize;}sqstack;status initstack(sqstack &s){//构造一个空栈ss.base=(selemtype *)malloc(stack_int_size * sizeof(selemtype));if(!s.base)exit(overflow);s.top=s.base;s.stacksize=stack_int_size;return ok;}//initstackstatus emptystack(sqstack s){if(s.top==s.base)return ok;else return error;}status push(sqstack &s,selemtype e){//插入元素e为新的栈顶元素int stacksize;if(s.top-s.base>=s.stacksize){s.base=(selemtype *)realloc(s.base, (s.stacksize+stackincrement )* sizeof(selemtype));if(!s.base)exit (overflow);s.top=s.base+s.stacksize;s.stacksize+=stackincrement;}*s.top++=e;return ok;}//pushstatus pop(sqstack &s,selemtype &e){//若栈不为空,则删除s的栈顶元素,用e返回其值if(s.top==s.base)return error;e=* --s.top;return ok;}//popint kuohao(char m[]){ //若括号匹配则返回1,否则返回0;sqstack s;int i=0;char x;initstack(s);while(m[i]!='#'){ if(m[i]=='('||m[i]=='[')push(s,m[i]);if(m[i]==')'||m[i]==']'){ if(emptystack(s))return 0;else{pop(s,x);if((x=='('&&m[i]==']')||(x=='['&&m[i]==')'))return 0; } }i++;}if(emptystack(s))return 1;else return 0;}void main (){ char e[7]={'(','(','(',']',')',']','#'};int p;p=kuohao(e);printf("说明:若括号匹配的话,输出结果为1,反之则为0.\n");printf("判断结果为:%d\n",p); }五、运行结果如输入的括号序列为:'(','(','(',']',')',']','#'运行结果:0(表明括号不匹配)。
解决括号匹配问题的思路方法和流程

解决括号匹配问题的思路方法和流程解决括号匹配问题的思路方法和流程引言括号匹配问题是编程中常见的问题,特别是在字符串处理和栈的应用中。
本文介绍了解决括号匹配问题的思路方法和流程,帮助读者更好地理解和解决这一问题。
思路方法和流程1.定义括号匹配问题:括号匹配问题指在一个字符串中判断左右括号是否合法匹配的问题。
2.基本思路:括号匹配问题可以使用栈的数据结构来解决。
我们可以遍历字符串,遇到左括号则入栈,遇到右括号则与栈顶元素比较,如果匹配则栈顶元素出栈,否则说明左右括号不匹配。
3.算法流程:–创建一个空栈,用于存储左括号。
–遍历字符串中的每一个字符。
–如果当前字符是左括号,则将其入栈。
–如果当前字符是右括号,则与栈顶元素比较。
–如果栈为空或栈顶元素与当前字符不匹配,则说明左右括号不匹配,返回 false。
–如果栈顶元素与当前字符匹配,则将栈顶元素出栈。
–遍历完字符串后,如果栈为空,则说明所有左右括号都匹配,返回 true;否则,返回 false。
4.代码示例(使用Python实现):def is_valid_parentheses(s: str) -> bool: stack = []for c in s:if c == "(" or c == "{" or c == "[":(c)else:if not stack:return Falseif c == ")" and stack[-1] != "(":return Falseif c == "}" and stack[-1] != "{":return Falseif c == "]" and stack[-1] != "[":return False()return not stack5.复杂度分析:–时间复杂度:遍历字符串的时间复杂度为 O(n),其中 n 为字符串的长度。
括号匹配问题源代码(C语言)

括号匹配问题就是给定任意判别式,然后检验括号的配对出现的情况。
可见输入的表达式有四种可能性:右括号配对次序不正确、右括号多于左括号、左括号多于右括号、左右括号匹配正确。
可以先检测表达式中的字符,若是左括号就入栈,如果是右括号就出栈一个元素与其配对,配对成功则继续访问下一个字符,否则退出。
出现非括号字符则跳过。
程序流程图如下:程序代码如下:#include<iostream>#include<string>#include<process.h>#include<stdlib.h>#define MaxSize 50using namespace std;/*------------主要的数据结构类型 --------------*/struct Text{int top;char Szstack[MaxSize];};/*-------------程序功能模块函数-------------*///检验栈是否为空bool IsEmpty(Text G){if(G.top==-1)return true;elsereturn false;}//检验栈是否为满bool IsFull(Text G){if(G.top==MaxSize-1)return true;elsereturn false;}//弹出栈顶元素char Pop(Text G){char n=G.Szstack[G.top];return n;}//检验括号是否配对int Check(char *A){int i;Text G;G.top=-1;int L=strlen(A);char c;for(i=0;i<L;i++){c=A[i];switch(c){case'(':G.Szstack[++(G.top)]=c;cout<<" 压入 ( top="<<G.top<<endl;break;case'[':G.Szstack[++(G.top)]=c;cout<<" 压入 [ top="<<G.top<<endl;break;case'{':G.Szstack[++(G.top)]=c;cout<<" 压入 { top="<<G.top<<endl;break;case')':if(Pop(G)!='('){return 0;}else{G.Szstack[G.top--];cout<<" 当遇 ) 出栈 ( top="<<G.top<<endl; break;}case']':if(Pop(G)!='[')return 0;else{G.Szstack[G.top--];cout<<" 当遇 ] 出栈 [ top="<<G.top<<endl; break;}case'}':if(Pop(G)!='{')return 0;else{G.Szstack[G.top--];cout<<" 当遇 } 出栈 { top="<<G.top<<endl;break;}default:break;}}if(!IsEmpty(G))return 0;return 1;}/*-------------主函数-------------*/int main(){system("color 75"); //设置颜色以美观Text G;char A[MaxSize];cout<<"请输入需要检验的括号(括号数小于50):"<<endl;cin>>A;if(Check(A)==1){cout<<" -----括号匹配-----"<<endl;}else{cout<<endl<<endl<<" -----括号不匹配-----"<<endl<<endl<<endl;}return 0;}以下分别是括号匹配与不匹配时的程序运行结果图:。
堆栈应用——括号匹配问题

堆栈应⽤——括号匹配问题 堆栈是各种软件系统中应⽤最⼴泛的数据结构之⼀。
括号匹配问题和表达式计算是编译软件中的基本问题,其软件设计中都需要⽤到堆栈。
【括号匹配问题】 假设⼀个算术表达式中包含圆括号、⽅括号和花括号三种类型括号,编写⼀个判别表达式中括号是否正确匹配配对的函数,并设计⼀个测试主函数。
【设计分析】括号匹配后到的括号要最先被匹配,满⾜堆栈“后进先出”的操作特点。
括号匹配有以下4种情况: (1)左右括号配对次序不正确; (2)右括号多于左括号; (3)左括号多于右括号; (4)括号匹配正确。
【源代码】SeqStackTest.java1package seqstack;23public class SeqStackTest {4//遍历字符数组并利⽤进栈出栈匹配括号5static void expIsCorrect(String[] exp,int n)throws Exception{6 SeqStack myStack = new SeqStack(100);7//LinStack myStack = new LinStack(); //也可以⽤链式堆栈8for(int i=0;i<n;i++){//如果是左括号就⼊栈9if((exp[i].equals(new String("(")))10 || (exp[i].equals(new String("[")))11 || (exp[i].equals(new String("{"))))12 myStack.push(exp[i]);13//如果是右括号)并且和栈顶(匹配,出栈14else if((exp[i].equals(new String(")"))) && myStack.notEmpty()15 && myStack.getTop().equals(new String("(")))16 myStack.pop();17//遍历的右括号)和栈顶不匹配,说明公式错误,结束遍历18else if((exp[i].equals(new String(")"))) && myStack.notEmpty()19 && !myStack.getTop().equals(new String("("))){20 System.out.println("左右括号匹配次序不正确!");21return;22 }23//如果是右括号]并且和栈顶[匹配,出栈24else if((exp[i].equals(new String("]"))) && myStack.notEmpty()25 && myStack.getTop().equals(new String("[")))26 myStack.pop();27//遍历的右括号]和栈顶不匹配,说明公式错误,结束遍历28else if((exp[i].equals(new String("]"))) && myStack.notEmpty()29 && !myStack.getTop().equals(new String("["))){30 System.out.println("左右括号匹配次序不正确!");31return;32 }33//如果是右括号}并且和栈顶{匹配,出栈34else if((exp[i].equals(new String("}"))) && myStack.notEmpty()35 && myStack.getTop().equals(new String("{")))36 myStack.pop();37//遍历的右括号}和栈顶不匹配,说明公式错误,结束遍历38else if((exp[i].equals(new String("}"))) && myStack.notEmpty()39 && !myStack.getTop().equals(new String("{"))){40 System.out.println("左右括号匹配次序不正确!");41return;42 }43//如果栈已空,但还存在右括号,说明右括号多了44else if((exp[i].equals(new String(")")))45 || (exp[i].equals(new String("]")))46 || (exp[i].equals(new String("}")))47 && !myStack.notEmpty()){48 System.out.println("右括号多余左括号!");49return;50 }51 }52//遍历完成后栈内还有元素,说明左括号多了53if(myStack.notEmpty())54 System.out.println("左括号多余右括号!");55else56 System.out.println("括号匹配正确!");57 }5859private static String[] strToString(String str){//把字符串转换为String类型数组60//为什么不转换为字符数组char[]呢?61//因为只有String类型的数据才具有可⽐性,也就是能⽤equals62int n = str.length();63 String[] a = new String[n];64for(int i=0;i<n;i++){65 a[i] = str.substring(i,i+1);//取⼦串含头不含尾,故可以取出i位置的字符并返回字符串类型66 }67return a;68 }6970public static void main(String[] args) {71 String str;72int n;73try{74 str = "(())abc{[}(){";//左右括号匹配次序不正确75 n = str.length();76 String[] a = strToString(str);77 expIsCorrect(a,n);7879 str = "(()))abc{[]}";//右括号多余左括号80 n = str.length();81 String[] b = strToString(str);82 expIsCorrect(b,n);8384 str = "(()()abc{[]}";//左括号多余右括号85 n = str.length();86 String[] c = strToString(str);87 expIsCorrect(c,n);8889 str = "(())abc{[]}";//括号匹配正确!90 n = str.length();91 String[] d = strToString(str);92 expIsCorrect(d,n);93 }94catch(Exception e){95 System.out.println(e.getMessage());96 }9798 }99 }Stack.java1package seqstack;23public interface Stack {4public void push(Object obj)throws Exception;5public Object pop()throws Exception;6public Object getTop()throws Exception;7public boolean notEmpty();8 }SeqStack.javapackage seqstack;public class SeqStack implements Stack{final int defaultSize=10;int top;Object[] stack;int sizeMaxSize;public SeqStack(int sz){initiate(sz);}private void initiate(int sz) {// TODO Auto-generated method stubsizeMaxSize=sz;top=0;stack=new Object[sz];}public void push(Object obj)throws Exception{if(top == sizeMaxSize){throw new Exception("堆栈已满!");}stack[top] = obj;top++;}public Object pop()throws Exception{if(top == 0){throw new Exception("堆栈已空!");}top--;return stack[top];}public Object getTop()throws Exception{if(top == 0){throw new Exception("堆栈已空!");}return stack[top-1];}public boolean notEmpty(){return(top>0);}}【运⾏结果】。
括号匹配算法

括号匹配算法
1 括号匹配算法
括号匹配算法又称为括号配对算法,也称作括号匹配问题,是指
在给定一组字符(括号)中,检查括号是否正确配对,即两个相同类
型的括号是否能够互相匹配。
括号配对算法涉及到判断括号间关系的一个基本问题。
括号主要有:大括号、中括号、小括号和圆括号等。
括号指的是具有某种特定
含义的文字标签,具有某种特定的语义内容,但是有时括号会由于某
种原因出现排列错误,这时便需要使用括号配对算法来检测括号的正
确性。
括号配对算法的基本思想是:一个左括号对应一个右括号,要求
对应括号之间没有其它字符及转义符号。
输入一个字符串,检查括号
是否完全匹配。
可以借助stack来实现,遇到左括号就入栈,遇到右
括号就出栈,最终判断出栈的字符是否是和左括号的配对的字符。
如
果栈最终是空的,代表字符串中的所有左右括号都是匹配的。
括号配对算法不仅可以用来检测括号正确配对,还可以用于查找
括号内容,同时可以应用于语音识别、文档分析和图形识别。
此外,
括号配对算法还可用于编译器的语法验证,帮助开发者确保程序质量,提高代码质量,避免在编译程序时发生异常。
总而言之,括号配对算法是一个简单又实用的应用。
它可以在多个领域被应用,并有助于确保编码的准确性,以保证代码质量。
括号配对问题(一)

括号配对问题(⼀)Description现在有⼀种只包括左右⼩括号(“(”和“)”)和空格(” “)的字符串序列,请你判断括号是否匹配,如果匹配就输出Yes,不匹配输出No。
Input输⼊数据第⼀⾏输⼊⼀个T(0≤T≤100),表⽰测试数据的组数。
接下来有T⾏测试数据,每⾏有⼀个符合题意的字符串,字符串长度不超过500。
Output每组测试数据,先输出⼀个”Case %d:“,%d表⽰第⼏组测试数据。
接着,如果字符串括号匹配,输出Yes,否则,输出No。
具体输出格式参考下⾯输出样例。
Sample Input2( ()))(Sample OutputCase 1:YesCase 2:No1#include<iostream>2#include<stack>3#include<stdio.h>4#include<string.h>5using namespace std;6int main()7{8int t,len,i,j,flag;9char x[601];10scanf("%d",&t);11getchar();12j=1;13while(t--)14{15gets(x);16len=strlen(x);17stack<char>s;18for(i=0; i<len; i++)19{20if(x[i]=='(')21s.push(x[i]);///压⼊栈22if(x[i]==')')23{24if(s.empty())25{26break;27}28else29s.pop();///出栈30}31}32if(s.empty()&&i>=len)33printf("Case %d:Yes\n",j); 34else35printf("Case %d:No\n",j); 36j++;3738}39return0;40}。
栈应用之括号匹配问题(Python版)

栈应⽤之括号匹配问题(Python版)栈应⽤之括号匹配问题(Python 版)检查括号是否闭合循序扫描被检查正⽂(⼀个字符)⾥的⼀个个字符检查中跳过⽆关字符(所有⾮括号字符都与当前处理⽆关)遇到开括号将其压⼊栈遇到闭括号时弹出当时的栈顶元素与之匹配如果匹配成功则继续,发现匹配失败时则以检查失败结束1def check_parens(text) :2# 括号匹配检查函数,text 是被检查的正⽂串3 parens = "(){}[]"4 open_parens = "({["5 opposite = {")":"(", "}":"{", "]":"["}67def parentheses(text) :8# 括号⽣成器,每次调⽤返回text⾥的下⼀括号及其位置9 i.text_len = 0,len(text)10while True :11while i < text_len and text[i] not in parens :12 i += 113if i >= text_len :14return15yield text[i],i16 i += 11718 st = SStack() # 创建栈 st1920for pr , i in parentheses(text) : # 对text⾥各括号和位置迭代21if pr in open_parens : # 开括号,压栈并继续22 st.push(pr)23elif st.pop() != opposite[pr] : # 闭括号若匹配失败就退出24print("Unmatching is found at ",i,"for",pr)25return False26# else : 匹配成功什么也不做。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东华理工大学长江学院课程设计报告
数据结构课题设计报告
设计题目:括号匹配问题
姓名:
班级:
学号:
指导老师:
二0一0年五月
目录
1.设计内容 (1)
问题描述 (1)
问题分析 (1)
2.概要设计 (2)
2-1模块一:初始化一个堆栈 (2)
2-2模块二:进栈 (2)
2-3模块三:测试堆栈是否为空 (2)
2-4模块四:退栈 (2)
2-5模块五:各模块间的调用关系 (2)
3.算法描述 (3)
3-1程序流程图: (3)
3-2程序代码: (4)
4.算法分析 (6)
5.心得体会 (8)
6.参考资料 (8)
1.设计内容
问题描述
假设一个算术表达式中可包含三种括号:圆括号,方括号和花括号且这三种括号可按任意次序嵌套使用。
试利用栈的运算,编写判别给定表达式中所含括号是否正确配对出现的算法。
问题分析
此程序须要完成如下要求:表达式中有三种括号:圆括号、方括号和花括号,嵌套顺序任意。
实现本程序需要解决:
①用什么数据结构;
②怎样实现判断括号是否匹配;
③括号匹配与否有几种情况;
④输出与输入数据的形式。
本程序的难点在于怎么判断括号是否匹配。
2.概要设计
2-1模块一:初始化一个堆栈
堆栈的顺序存储结构可以利用一个具有M个元素的数组STACK[0..M-1]来描述。
其中,STACK作为堆栈的名字,且不妨设:#define M 100 */定义堆栈的最大容量,并初始化栈顶指针变量top=-1。
2-2模块二:进栈
在容量为M的堆栈中插入一个新的元素E[i],栈顶元素的位置由top指出。
新的数据元素进栈,将栈顶指针加1,然后将新的数据元素E[i]插入到修改以后的top指出的新的栈顶位置上。
2-3模块三:测试堆栈是否为空
测试堆栈是的栈顶指针top是否为-1。
2-4模块四:退栈
从堆栈中退出当前栈顶元素,并保存在变量item中,同时将栈顶指针减1修改栈顶指针位置。
2-5模块五:各模块间的调用关系
首先创建一个堆栈并初始化,依次读入字符直到文件的末尾。
如果读得的字符为左括号,则将其压入堆栈。
如果读得的字符是右括号,而此时堆栈为空,进栈,则出现不匹配现象,报告错误;否则,退出当前栈顶元素。
如果退出的栈顶符号不是对应的左括号,则出现不匹配,报告错误。
读到文件末尾,若堆栈非空,则报告错误。
3.算法描述
3-1程序流程图:
3-2程序代码:
#include "stdio.h"
typedef int SElemType;
# define M 100 /*定义堆栈的最大容量*/ SElemType STACK[M];
int top; /*栈顶指针变量*/
int PAIRBRACKET(char E[])
{
SElemType STACK[M];
char item;
int i=0,top=-1; /*初始化一个堆栈*/
while(E[i]!='\0'){
if(E[i]=='(' || E[i]=='[' || E[i]=='{')
STACK[++top]=E[i]; /*进栈*/
if(E[i]==')'){
if(top==-1){ /*测试堆栈是否为空*/
printf("mismatching!");
return 0;
}
item=STACK[top--]; /*退栈*/
if(item!=E[i]-1){
printf("mismatching!");
return 0;
}
}
else if(E[i]==']' || E[i]=='}'){
if(top==-1){ /*测试堆栈是否为空*/
printf("mismatching!");
return 0;
}
item=STACK[top--]; /*退栈*/
if(item!=E[i]-2){
printf("mismatching!");
return 0;
}
}
i++;
}
if(top==-1)
printf("matching!\n");
else
printf("mismatching!\n");
return 1;
}
void main()
{
char s[M]={0};
printf("Please enter the parentheses arithmetic expression:\n");
scanf("%s",s);
PAIRBRACKET(s);
}
4.算法分析
首先创建一个堆栈
typedef int SElemType;
# define M 100
SElemType STACK[M];
int top;
并初始化
top=-1
依次读入输入的表达式字符直到E[i]=’\0’结束。
如果读得的字符为左括号,则将其压入堆栈。
如果读得的字符是右括号,而此时堆栈为空,进栈,则出现不匹配现象,报告错误;否则,退出当前栈顶元素。
如果退出的栈顶符号不是对应的左括号,则出现不匹配,报告错误。
读到文件末尾,若堆栈非空,则报告错误。
while(E[i]!='\0'){
if(E[i]=='(' || E[i]=='[' || E[i]=='{')
STACK[++top]=E[i]; /*进栈*/
if(E[i]==')'){
if(top==-1){ /*测试堆栈是否为空*/
printf("mismatching!");
return 0;
}
item=STACK[top--]; /*退栈*/
if(item!=E[i]-1){
printf("mismatching!");
return 0;
}
}
else if(E[i]==']' || E[i]=='}'){
if(top==-1){ /*测试堆栈是否为空*/
printf("mismatching!");
return 0;
}
item=STACK[top--]; /*退栈*/
if(item!=E[i]-2){
printf("mismatching!");
return 0;
}
}
i++;
}
if(top==-1)
printf("matching!\n");
else
printf("mismatching!\n");
return 1;
时间、空间性能分析:本算法采用的是顺序栈结构,定义了一个长100的字符型数组,时间主要花在表达式中括号的读取中,时间的多少取决于该表达式中括号的多少,总的来说时间性能还是不高的,而空间爱你性能则不错,与链栈相比节省很多空间。
所以本程序时间、空间性能不错。
5.心得体会
通过这次的数据结构课程设计实验周,我进一步理解了顺序堆栈的构造极其逻辑结构定义,并一定程度上掌握顺序堆栈的基本操作算法。
书本上对顺序堆栈的基本算法介绍的比较详尽,但由于我对这方面的知识了解真的不深,而且之前C语言的基础没有打好,程序设计过程中遇到不少难题,通过和直到老师、同学们的沟通,并上网查了些资料,问题终于得到一定程度上的解决。
这个程序中不足的地方在于由于堆栈是一个动态结构,而数组是一个静态结构,故利用静态结构的数组描述一个动态结构的堆栈,还存在溢出问题。
然而程序中只考虑到对空栈进行删除操作会产生的下溢问题,而忽略了对栈中已有M个元素时再做进栈操作会产生的上溢问题。
这一次程序设计实验周中我受益匪浅,既复习并熟悉了数组方面的知识,又掌握到了顺序堆栈的基本算法。
所学到的知识得到了很好的复习并巩固。
我认识到数据结构是实践很强的一门课程,光是“听”和“读”是绝对不够的,必须加强实践。
在写算法的过程中,出现过很多问题,然而在不断修改的过程中便是我学习的过程。
在这个过程中,只要全身心的投入了,便会发现很多乐趣。
6.参考资料
唐发根数据机构教程(第二版)北京航空航天大学出版社
东华理工大学长江学院课程设计报告评分表
东华理工学院长江学院
课程设计评分表
学生姓名:班级:学号:
课程设计题目:括号匹配问题
9。