数据结构课程设计---括号匹配

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1.1 题目....................................................

2...............

1.2 问题....................................................

2...............

2 设计...................................................... 2 ...............

2.1 存储结构设计............................................ 2 .............

4 对设计和编码的讨论和分析................................. 2..1.

4.1 设计................................................... 2..1..

4.2 对编码的讨论........................................... 2..1.

5 总结和体会.............................................. 2..3 ........... 附录一 ................................................... 2..4 .............

本科生课程设计成绩评定表.......................................... 错...误... !未定义书签

1 问题描述 ....................................................................................................

2 .............

1.3 要求......................................................................................................... 2 ..............

2.2 主要算法设计........................................................................................... 3 ...........

2.3 测试用例及测试结果............................................................................... 6 .........

3 调试报告 .................................................................................................... 9 .............

数据结构课程设计

——判别括号配对

1 问题描述

1.1 题目:

判别括号配对

1.2 问题:

一个算术表达式含圆括号、中括号、花括号,且它们可任意嵌套使用。写一程序,判断任一算术表达式中所含括号是否正确配对。

1.3 要求:

(1)表达式从键盘输入。

(2)利用栈求解此问题。

(3)测试用例自己设计。

2 设计

2.1 存储结构设计

题目要求利用栈来求解此问题,因此选择顺序栈作为存储结构,具体表示如下:

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

typedef struct{ char *base; char *top;

int stacksize;

}SqStack;

2.2 主要算法设计

2.2.1 算法思想

(1)文字描述

从键盘输入一个表达式;

逐个扫描表达式中的字符;

当遇到左括号时,将左括号入栈;

继续扫描,将此后遇到的第一个右括号与栈顶元素比较,若匹配,则栈顶元素出栈;否则,继续扫描;当整个表达式扫描完以后,判断栈内是否还有元素,若有,则括号不匹配;若栈为空,则括号配对成功;

在括号配对不成功的情况下,利用栈顶栈底元素的差值,可以对左右括号数进行比较

(2)流程图表示

2.2.2 算法

void CharIsCorrect(char a[]){

SqStack S;

char e;

int n,c;

InitStack(S);//建立一个空栈

n=strlen(a);// 求表达式长度

int d=0,b=0;

for(int i=0;i

Push(S,a[i]);

else{

c=StackEmpty(S);

if ((c==1)&&((a[i]==')')||(a[i]==']')||(a[i]=='}')))// 栈为空且当前扫描的字符为右括号时,右括号多于左括号

++b;

else{

e=GetTop(S);

if (((a[i]==')')&&(e=='('))||((a[i]==']')&&(e=='['))||((a[i]=='}')&&(e=='{')))// 括号匹配时满足的条件

e=Pop(S);

else if ((a[i]==')')||(a[i]==']')||(a[i]=='}'))

++d;

}

相关文档
最新文档