




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 栈的链式存储及应用一、实习目的1. 理解栈的概念和特点。2. 掌握栈这种数据结构特性及其主要存储结构。3. 在现实生活中灵活运用栈这种数据结构。 二、实验内容 完成下面内容1、 链栈的存储和基本操作:初始化、出栈、入栈、取栈顶元素、输出栈中元素2、假设一个算术表达式中包含圆括号、方括号和花括号三种类型的括号,编写一个判别表达式中括号是否正确配对的函数,并设计一个测试主函数。算法思想: 算术表达式中右括号和左括号匹配的次序正好符合后到的括号要最先被匹配的“后进先出”堆栈操作特点,因此可以借助一个堆栈来进行判断。括号匹配共有四种情况:(1)左右括号配对次序不正确;(2)右括号多于左括号;(3)左括号多于右括号; (4)左右括号匹配正确。 要求:实验后用专用实验纸书写报告。报告中要说明实验题目,内容;分析实验过程,总结实验结果。三、 设计指导1、链栈1)结点的定义#include#include#includetypedef int DataType;typedef struct nodeDataType data;struct node *next;StackNode,*LinkStack;2) 部分函数/堆栈初始化LinkStack InitStack()return NULL;/入栈LinkStack PushStack(LinkStack L,int x)/请大家在自己完成/出栈LinkStack PopStack(LinkStack L,int e)/请大家在自己完成/显示栈中元素void VisitStack(LinkStack L)/请大家在自己完成/取栈顶元素int StackTop(LinkStack L,int e)/请大家在自己完成void main() int i,e; LinkStack L; L=InitStack(); /构造空栈 while(1) printf(*堆栈*n); printf(1 入栈 2 出栈 3 显示栈中元素 4 取栈顶元素 0 返回n); printf(*n); scanf(%d,&i); switch(i) case 1: printf(入栈元素的值为:); scanf(%d,&e);L=PushStack(L,e);break; case 2: L=PopStack(L,e);break;case 3: printf(栈中元素自栈顶至栈底为:n); VisitStack(L) ; break;case 4: printf(栈顶元素为:%-6dn,StackTop(L,e);break;case 0: exit(0);default: printf(输入错误,请重新选择!n); 2、括号匹配问题算法思想: 算术表达式中右括号和左括号匹配的次序正好符合后到的括号要最先被匹配的“后进先出”堆栈操作特点,因此可以借助一个堆栈来进行判断。括号匹配共有四种情况:(1)左右括号配对次序不正确;(2)右括号多于左括号;(3)左括号多于右括号; (4)左右括号匹配正确。 #include#include#include#define MaxStackSize 100typedef char DataType;typedef struct DataType stackMaxStackSize; int top; SeqStack;/1)初始化StackInitiate(S)void StackInitiate(SeqStack *S) S-top = 0;/(2)非空否StackNotEmpty(S)int StackNotEmpty(SeqStack S) if(S.top top = MaxStackSize) printf(堆栈已满无法插入! n); return 0; else S-stackS-top = x; S-top +; return 1; /(4)出栈StackPop(S, d)int StackPop(SeqStack *S, DataType *d) if(S-top top -;*d = S-stackS-top; return 1; /(5)取栈顶数据元素StackTop(SeqStack S, DataType *d)int StackTop(SeqStack S, DataType *d) if(S.top = 0) printf(堆栈已空! n); return 0; else *d = S.stackS.top - 1; return 1; void ExpIsCorrect(char exp, int n) SeqStack myStack; int i; char c; StackInitiate(&myStack); for(i = 0; i n; i+) if(expi = () | (expi = ) | (expi = )StackPush(&myStack, expi); else if(expi = )&StackNotEmpty(myStack)& StackTop(myStack,&c) & c = () StackPop(&myStack, &c); else if(expi = ) & StackNotEmpty(myStack)& StackTop(myStack, &c) & c != () printf(左右括号配对次序不正确!n); return; else if(expi = & StackNotEmpty(myStack)& StackTop(myStack, &c) & c = )StackPop(&myStack, &c); else if(expi = & StackNotEmpty(myStack)& StackTop(myStack, &c) & c != ) printf(左右括号配对次序不正确!n);return;else if(expi = & StackNotEmpty(myStack)& StackTop(myStack, &c) & c = )StackPop(&myStack, &c); else if(expi = & StackNotEmpty(myStack)& StackTop(myStack, &c) & c != ) printf(左右括号配对次序不正确!n); return;else if(expi = ) | (expi = ) | (expi = )& !StackNotEmpty(myStack) printf(右括号多于左括号!n); return; if(StackNotEmpty(myStack) printf(左括号多于右括号!n);else printf(左右括号匹配正确!n); void main(void) Se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit8ProtectingtheenvironmentLesson5英文教学设计冀教版八年级英语上册
- 饮用水设备采购合同范本及注意事项
- 第18课 统一多民族国家的巩固和发展 说课稿-2023-2024学年浙江省部编版历史与社会七年级下册
- 高教版说课稿中职中职专业课电气设备运行与控制66 装备制造大类
- 第5课 包书皮和修补图书说课稿小学劳动湘教版中年级-湘教版
- 2025健身房转让合同样本
- 浙教版2023年 七年级下册 第10课 物联系统原型搭建 说课稿
- 2025年消防执业资格考试题库:消防应急救援装备行业市场竞争力提升试题
- 2025年园艺师职业技能鉴定模拟试卷:园艺行业政策分析与应用试题
- 第十九课 腊梅花的制作说课稿小学综合实践活动吉美版五年级上册-吉美版
- 2022版义务教育《体育与健康课程标准》测试题-含答案
- GB/T 8167-1987包装用缓冲材料动态压缩试验方法
- GB/T 34903.2-2017石油、石化与天然气工业与油气开采相关介质接触的非金属材料第2部分:弹性体
- 覆岩离层注浆减沉技术研究的新进展课件
- 折纸校本课程纲要
- 北师大版五年级数学上册练习四
- 新汉语水平考试 HSK(四级)
- 职业院校人才培养工作状态数据采集与管理制度
- T∕CGMA 033001-2018 压缩空气站能效分级指南
- 诊断学基础知识常见症状ppt课件
- 外研版六年级上册英语学案
评论
0/150
提交评论