成 绩 实验三
实验题目:括号匹配的检验
一、实验目的
加深理解栈的定义和特性; 掌握栈的存储结构与实现
二、实验内容:任意输入一个由若干个圆括号、方括号和花括号组成字符串,设计一个算法判断该串中的括号是否配对。 三、设计与编码 1、基本思想
基本思想:最内层(最迟出现)的左刮号必须与最内层(最早出现)的同类右刮号配对,它最急切地期待着配对。配对之后, 期待得以消解。因此为左刮号设置一个栈,置于栈顶的左刮号期待配对的急切程度最高。
实例:[ ( [ ] { } ) ]、( [ { } ] )、
{ [ ] } )、 ( { [ ] }、( { [ ] ] )
2、编码
#include #includeconst int StackSize=100; class SeqStack {
public: SeqStack(){top=-1;} ~SeqStack(){} void Push(char s); char Pop(); void Peidui(char s[StackSize]); private: char data[StackSize]; int top; };
void SeqStack::Push(char s) { if(top==StackSize-1) throw\"上溢\"; top++; data[top]=s; }
char SeqStack::Pop() { if(top==-1)throw\"下溢\"; else
{ char a; a=data[top--]; return a; } }
void SeqStack::Peidui(char *s) { int i=0,l=strlen(s); char t; for(i=0;ivoid main(){ char str[10]; cout<<\"请输入括号;\"<>str; SeqStack S; S.Peidui(str); }四、调试与运行
1、调试时遇到的主要问题及解决
2、运行结果(输入及输出,可以截取运行窗体的界面)
五、实验心得