括号匹配的报告

括号匹配的报告

ID:21867937

大小:103.52 KB

页数:5页

时间:2018-10-25

括号匹配的报告_第1页
括号匹配的报告_第2页
括号匹配的报告_第3页
括号匹配的报告_第4页
括号匹配的报告_第5页
资源描述:

《括号匹配的报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验题目括号匹配实验报告一、实验目的与要求利用链栈实现括号匹配算法;要求:运用链表建立一个栈S。检验括号是否匹配的方法可用“期待的急迫程度”来描述。每读入一个括号,若是右括号,则或者使罝于栈顶的最急迫的期待得以消解,或者是不合法的情况:若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降Y—级。另外,在算法的开始和结朿时,栈都应该是空的。二、实验方案算法思想:利用栈的后进先出性质,编写的括号(UU)匹配算法,如果是{(UM形式的括号,显示匹配,如果是(}】)[则显示不匹配,基

2、本思想:1.遇到左括弧,则进栈,2.遇到右括弧,则和栈顶的括弧检验是否匹配,如果匹配,则将左括弧出栈3.全部匹配时,栈应该是空#defineNULL0typedefstructLNode{chardata;char*next;char*top;/*栈顶指针*/}LNode,*LinkStack;intInit(LinkStackS)/*置栈空{S=(LinkStack)malloc(sizeof(LNode));S->top=NULL;}intStackEmpty(LinkStackS)/*判栈空*/{if(S->to

3、p==0)return(l);elsereturn(O);}intPush(LinkStackS,chare)/*进栈Push*/{char*p=(LinkStack)malloc(sizeof(LNode));;/*申请一个结点空间*/p-〉data=e;p->next=S->top;S->top=p;return1;}IntPop(LinkStackS,chare){char*p=(LinkStack)malloc(sizeof(LNode));;if(S->top!=NULL){p-〉data=e;p=S-〉to

4、p;S-〉top=p-〉next;free(p);}return1;}intTop(LinkStackS)/*取栈顶元素*/{chare;if(StackEmpty(S))return0;else{e=S->top;return1;}}intBrackets(LinkStackS,char*str){inti=0,X=0;chare;printf(’’Pleaseinputstring:");scanf("%s”,str);while(str[i]!=,,){switch(str[i]){case’(':pus

5、h(S,str[i]);break;case*[':push(S,str[i]);break;case'{':push(S,str[i]);break;case*)':{pop(S,&e);if(e!-C)X=1;}break;casepop(S,&e);if(e!='「)X=l;}break;casepop(S,&e);if(e!-{')X=1;}break;default:break;}if(X)break;i++;}if(!X&&stackempty(S))printf(’’Youareright!thebrac

6、ketsismatch!'*);elseprintf("Wrong!!thebracketsisn'tmatch!H);return1;}#includevoidmain(){charstr[100];LinkStackS;Init(S);printfC*H);printffWELCOME");printf(nM);Brackets(S,str);printf(’'");printf("SeeyouH);getch();}三、实验结果和数据处理C:Win-TCp

7、rojects00000~2.exeWELCOMEPleaseinputstring:<[(()]]}Wrong**thebracketsisn’tmatch*Seeyou四、结论木次实验过程中主要遇到的问题有以下几点:1.说明语法错误,通常是定义的时候重复定义或者不符合c语言的表现类型的定义。2.错误不是一个允许的类型在函数中,是因为定义类型时不符合要求。3.错误指针必需在的左侧在函数屮,经过我多次试验及思考,我至今不明白该怎么更改,每次都是胡乱猜中而实验成功木次实验过程中的结论:1.为了可以克服顺序栈操作带來的

8、大量元素的移动问题,可采用链式存储结构來构造栈。2.由于链栈是动态分配元素的存储空间的,所以操作时无须考虑上溢问题。五、问题与讨论问题一、栈和队列的区别?栈和队列都是操作位罝受限(只允许在端点处插入和删除)的线性表.它们的不同是:1.栈是先进后出的线性表,而队列是先进先出的线性表,也就是说栈是按先进后出的原则进行修改,队列是按先进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。