




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验题目 括号匹配 实验报告一、 实验目的与要求利用链栈实现括号匹配算法;要求:运用链表建立一个栈S。检验括号是否匹配的方法可用“期待的急迫程度”来描述。每读入一个括号,若是右括号,则或者使置于栈顶的最急迫的期待得以消解,或者是不合法的情况;若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。另外,在算法的开始和结束时,栈都应该是空的。 二、 实验方案算法思想:利用栈的后进先出性质,编写的括号()匹配算法,如果是()形式的括号,显示匹配,如果是()则显示不匹配,基本思想: 1.遇到左括弧,则进栈, 2.遇到右括弧,则和栈顶的括弧检验是否匹配,如果匹配,则将左括弧出栈 3.全部匹配时,栈应该是空 #define NULL 0typedef struct LNode char data; char *next; char *top; /*栈顶指针*/ LNode,*LinkStack;int Init(LinkStack S) /*置栈空*/ S=(LinkStack)malloc(sizeof(LNode); S-top=NULL; int StackEmpty(LinkStack S) /* 判栈空*/ if(S-top=0) return(1); else return(0); int Push(LinkStack S,char e) /*进栈Push*/ char *p=(LinkStack)malloc(sizeof(LNode); /*申请一个结点空间*/ p-data=e; p-next=S-top; S-top=p; return 1;Int Pop(LinkStack S,char e)char *p=(LinkStack)malloc(sizeof(LNode); if(S-top!=NULL) p-data=e; p=S-top; S-top=p-next; free(p); return 1;int Top(LinkStack S) /*取栈顶元素 */char e; if(StackEmpty(S) return 0; else e=S-top; return 1; int Brackets(LinkStack S,char *str)int i=0,X=0; char e; printf(Please input string:n); scanf(%s,str); while(stri!=0) switch(stri) case (:push(S,stri);break; case :push(S,stri);break; case :push(S,stri);break; case ):pop(S,&e);if(e!=()X=1;break; case :pop(S,&e);if(e!=)X=1;break; case :pop(S,&e);if(e!=)X=1;break; default:break; if(X)break; i+; if(!X&stackempty(S) printf(You are right!the brackets is match!n); else printf(Wrong!the brackets isnt match!n); return 1; #includevoid main() char str100;LinkStack S;Init(S);printf(-n);printf( WELCOME n) ;printf(-n) ;Brackets(S,str);printf(nnn); printf( See you n);getch();三、实验结果和数据处理四、 结论本次实验过程中主要遇到的问题有以下几点:1.说明语法错误,通常是定义的时候重复定义或者不符合c语言的表现类型的定义。2.错误 不是一个允许的类型在函数中,是因为定义类型时不符合要求。3.错误指针必需在 - 的左侧在函数中,经过我多次试验及思考,我至今不明白该怎么更改,每次都是胡乱猜中而实验成功本次实验过程中的结论:1. 为了可以克服顺序栈操作带来的大量元素的移动问题,可采用链式存储结构来构造栈。2. 由于链栈是动态分配元素的存储空间的,所以操作时无须考虑上溢问题。五、 问题与讨论问题一、栈和队列的区别?栈和队列都是操作位置受限(只允许在端点处插入和删除)的线性表.它们的不同是:1.栈是先进后出的线性表,而队列是先进先出的线性表,也就是说栈是按先进后出的原则进行修改,队列是按先进先出的原则进行修改;2. 栈只在表的一端(栈顶)进行插入和删除,队列是分别在表的两端进行插入(队尾)和删除(队头)。问题二、链栈与顺序栈的异同?和线性表类似,栈也有两种存储表示:顺序栈和链栈。栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是”后进先出”。顺序存储结构简称为顺序栈。和顺序表类似,对顺序栈也需要事先为它分配一个可以容纳最多元素的存储空间。顺序栈中元素用向量存放 栈底位置是固定不变的,可设置在向量两端的任意一个端点 栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置 在顺序栈中有上溢和下溢的现象。上溢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025电子产品买卖合同范本汇编
- 2025年吉林省农村义务教育阶段学校教师特设岗位计划合同签订仪式举行
- 服装公司生产合同范本
- 空调系统合同范本
- 水稻品种终止合同范本
- 2025鞋类品牌加盟合同
- 劳务派遣合同范本个人
- 材料采购欠款合同范本
- 渣土车辆购买合同范本
- 地产保险合同范本
- 2025年秋招:新媒体运营笔试题目及答案
- 工作总结及工作思路(输电运维班)
- 感染性休克的护理诊断与措施
- Unit 14 I remember meeting all of you in Grade 7(大单元教材分析)教学课件 人教新目标九年级英语全册
- 肺炎护理试题填空及答案
- 食材配送 售后服务方案
- 安全操作规程修订要求
- 2025年四川绵阳燃气集团有限公司招聘考试笔试试题(含答案)
- 2025至2030盾构机行业市场深度研究与战略咨询分析报告
- 2022年咸阳经开城市发展集团有限公司招聘笔试试题及答案解析
- 不等式的基本性质说课课件
评论
0/150
提交评论