好文档 - 专业文书写作范文服务资料分享网站

大数据结构 括号匹配实验报告材料

天下 分享 时间: 加入收藏 我要投稿 点赞

标准

括号的匹配 1. 需求和规格说明

(1)实现括号的是否匹配的判定。 (2)实现匹配错误的提示。 (3)实现栈内容的动态显示。

2.设计

2.1.设计思想

(1)对于括号匹配的判定,首先输入字符串到缓冲区。逐个字符读取字串,遇到的是左括号则入栈,若是右括号,则出栈。出栈的左括号如果和右括号匹配,则一对括号匹配成功;否则,这对括号匹配失败,并给出错误提示。

(2)分析括号匹配错误出现的情况,主要有三种:左括号数大于右括号数,左括号与右括号不匹配,右括号数大于左括号数。根据栈的存储情况就能判定出这三种情况,并且实时的将信息放映到可视化控件上。

(3) 对于匹配过程和栈内容的动态显示,可以用listbox控件实时的显示和更新。窗口上有两个listbox控件,第一个动态显示push和pop动作以及提示错误信息;第二个listbox则动态模拟栈内的存储情况。

2.2.设计表示 (1)存储结构 Node节点

template class Node {

public:

element ele;

Node *pre; //前驱指针 Node *next; //后继指针

Node() { pre=NULL; next=NULL; }

Node(element e) { ele=e; pre=NULL; next=NULL; }

文案

标准

Node * MakeNode(element e)//传入参数返回一个节点指针,实现参数的封装。 { Node *temp=new Node(e); return temp; } };

MyListStack链栈

template class MyListStack {

public:

Node *base; Node *top; int index;

MyListStack() //初始化链表 { base=new Node(); top=base; index=0; }

void push(element n) //push { Node *temp=new Node(n); top->next=temp; temp->pre=top; top=temp; index++; }

void pop(element & out) //pop { out=top->ele; top=top->pre; delete top->next; top->next=NULL; index--; }

BOOL isEmpty(); //返回栈是否为空 { if(index)

文案

标准

return FALSE; else return TRUE; }

virtual ~MyListStack() //析构链栈,释放空间。 { Node *p=base; Node *q=p->next; while(p->next!=NULL) { delete p; p=q; q=p->next; } delete p; } };

(2)涉及的操作

void CKuohaopipeiDlg::OnButtonClear() //清空窗口控件。

void CKuohaopipeiDlg::OnButtonSlowShow( //慢速显示运行过程。 void CKuohaopipeiDlg::OnOK() //进行括号匹配过程。

void CKuohaopipeiDlg::OnSelchangeListInfo() //此函数响应列表框中光标改变的消息,定位错误的位置。

2.3.实现注释

(此部分见源代码中注释) 2.4.详细设计表示 (1)流程示意图

文案

标准

图表 1 匹配流程示意图

(2)功能示意图

图表 2 功能示意图

文案

标准

3.用户手册

(1)在编辑框中输入表达式串。

(2)点击开始匹配测试则进行快速匹配。 (3)点击慢速运行。

(4)点击错误信息,定位错误字符。 4.调试报告

输入:{{{[1+1]+(A+d)}}} 结果:正确 输入:{{{{}}}})) 结果:错误 输入:}()){}} 结果:错误 输入:([][])) 结果:错误

5.源代码及运行结果截图 (1)源代码

void CKuohaopipeiDlg::OnOK() {

// TODO: Add extra validation here UpdateData(TRUE);

//MyListStack ls;

m_list_info.ResetContent(); //清空list m_list_stack.ResetContent(); //清空list BOOL isNum=0; BOOL isError=0;

int inputlength=m_cstring_input.GetLength(); if (inputlength==0) {

MessageBox(\输入值不能为空!\提示\如果字符串为空 }

else {

for(int j=0;j

char str_in=m_cstring_input.GetAt(j);

if (str_in=='('||str_in=='['||str_in=='{') {

isNum=1;

ls.push(str_in); //若为左括号则入栈 CString temp;

temp.Format(\

文案

大数据结构 括号匹配实验报告材料

标准括号的匹配1.需求和规格说明(1)实现括号的是否匹配的判定。(2)实现匹配错误的提示。(3)实现栈内容的动态显示。2.设计2.1.设计思想(1)对于括号匹配的判定,首先输入字符串到缓冲区。逐个字符读取字串,遇到的是左括号则入栈,若是右括号,则出栈。出栈的左括号如果和右括号匹配,则一对括号匹配成功;否则
推荐度:
点击下载文档文档为doc格式
570hb991ym2p7v43zg0p6rgfk15sw100haa
领取福利

微信扫码领取福利

微信扫码分享