《数据结构课程实验》大纲
《数据结构课程实验》大纲
《数据结构课程实验》大纲一、《数据结构课程实验》的地位与作用“数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。
本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
由于以下原因,使得掌握这门课程具有较大的难度:(1)内容丰富,学习量大,给学习带来困难;(2)贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点;(3)所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度;(4)隐含在各部分的技术和方法丰富,也是学习的重点和难点。
根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。
通过实验实践内容的训练,突出构造性思维训练的特征, 目的是提高学生组织数据及编写大型程序的能力。
实验学时为10。
二、《数据结构课程实验》的目的和要求不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。
实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。
为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。
数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。
在掌握基本算法的基础上,掌握分析、解决实际问题的能力。
三、《数据结构课程实验》内容课程实验共10学时,要求完成以下五个题目:实习一约瑟夫环问题(2学时)用循环链表实现约瑟夫环问题,熟悉链表结构的使用。
数据结构实验大纲
数据结构实验大纲《数据结构A》实验大纲课程编码:07040021课程英文名:Data Structure A适用专业:计算机科学与技术本科、网络工程本科、计算机科学与技术(师范)本科实验学时:16学时学分:0.5学分一、实验课程的性质、目的和任务数据结构是计算机专业的一门核心课程,是计算机及相关专业的重要的基础理论课程。
该课程既有较强的理论,又要联系实际。
通过《数据结构》实验的开设,使学生学会分析数据的特性,给出数据结构的描述,写出相应的算法,培养和训练学生编写复杂程序的能力,使学生的编程能力有一个质的提高。
二、实验环境1、硬件:计算机2、软件:vc6.0三、实验内容:实验1抽象数据类型的实现实验(一)实验目的要求1. 了解结构体和抽象数据类型(ADT)的基本概念,及描述方法。
2. 通过对复数抽象数据类型ADT的实现,熟悉VC环境(掌握结构体类型),为以后章节的学习打下基础。
(二)实验学时:2 学时(三)实验类型:验证(四)实验内容1.复数抽象数据类型ADT的描述及实现。
[复数ADT的描述]ADT complex{数据对象:D={ c1,c2 c1,c2∈FloatSet }数据关系:R={ c1 c2 }基本操作:创建一个复数 creat(a);输出一个复数 outputc(a);求两个复数相加之和 add(a,b);求两个复数相减之差 sub(a,b);求两个复数相乘之积 chengji(a,b);等等;} ADT complex;2. 复数ADT实现的源程序如下:#include#include/* 存储表示,结构体类型的定义 */ typedef struct{ float x; /* 实部子域 */float y; /* 虚部的实系数子域 */}comp;/* 子函数的原型声明 */void creat(comp *c);void outputc(comp a);comp add(comp k,comp h);/* 主函数 */main(){ creat(&a); outputc(a);creat(&b); outputc(b);a1=add(a,b); outputc(a1);} /* maijn *//* 创建一个复数 */void creat(comp *c){ float c1,c2;printf("输入实部real x=?");scanf("%f",&c1);printf("输入虚部xvpu y=?");scanf("%f",&c2);(*c).x=c1; c ->y=c2;} /* creat *//* 输出一个复数 */void outputc(comp a){ printf("\n %f+%f i \n\n",a.x,a.y);}/* 求两个复数相加之和 */comp add(comp k,comp h){ comp l;l.x=k.x+h.x; l.y=k.y+h.y;return(l);} /* add */3.将上面源程序输入计算机,进行调试。
《数据结构》实验大纲
《数据结构》实验教学大纲课程编号:课程总学时:72计划学时数:36实验课类型:专业基础实验面向专业:计算机科学与技术、信息与计算科学、现代教育技术、计算机应用技术、电子商务开课时间:第二学年第一学期考核方式:笔试教材:严蔚敏,吴伟民,《数据结构》(C语言版)清华大学出版社,一、目的要求:目的:数据结构是计算机科学的算法理论基础和软件设计的技术基础,主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现,是计算机专业的核心课程,也是其他相关专业的热门选修课。
本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这点,上机实习是重要的。
通过完成本实验课的实验,学生应学会和掌握本课程的基本和重点知识;深刻理解逻辑结构、物理结构、算法设计之间的关系;初步学会算法分析的方法,并能在一定的算法范围内运用所掌握的分析方法进行算法分析;训练并具有进行复杂程序设计的能力,养成良好程序设计的习惯。
要求:将书中常用算法编写成程序,上机调试,验证算法的正确性,同时理解数据结构对于软件开发的意义。
同时又能复习C语言(c++语言)的重点与难点,熟悉vc++6.0调试环境,掌握一个完整程序的构成,为今后软件设计打下基础。
二、实验项目情况汇总:三、实验成绩考核办法通过课堂上启发式讲解实验要求和任务、学生实验前自创性的准备工作、上机实验时的验证和反馈,来帮助学生理解计算机的基本原理,熟悉和掌握一些常用软件的使用,为以后的课程打下基础。
采用平时成绩和考试成绩相结合的评定方法。
每个实验都根据学生的动手能力及实验报告成绩进行综合评分。
四、主要使用的仪器设备计算机及VC++6.0软件。
《数据结构》实验教学大纲
《数据结构》实验教学大纲(Data Structure)课程代码:0610009实验学时:25学时先修课程:《C语言程序设计》、《离散数学》一、目的要求目的:通过实验,可使学生深刻理解各种逻辑结构、存储结构的特性,培养通过实际问题分析其数据对象、基本操作,选择逻辑结构、存储结构灵活应用基本算法,并设计出具有专业水准的应用程序的能力。
要求:熟悉VC++的编程和调试环境,根据实验内容和要求,认真完成程序编写、上机调试、运行结果分析,书写实验报告。
二、实验项目内容及学时分配实验一、单链表的建立、删除和插入(2学时)1. 实验目的要求熟悉C语言的上机环境,进一步掌握C语言的结构特点。
掌握线性表的链式存储结构——单链表的定义及C语言实现。
2. 实验主要内容实现线性表在链式存储结构——单链表中的各种基本操作。
3. 实验类别:专业基础4. 实验类型:验证5. 实验要求:必做6. 主要仪器:微型计算机或相应的设备实验二、栈的建立、插入和删除(2学时)1. 实验目的要求掌握栈的顺序表示和结构特点,描述方法及有关概念。
2. 实验主要内容实现顺序栈的建立、插入、删除的操作算法。
3. 实验类别:专业基础4. 实验类型:验证5. 实验要求:必做6. 主要仪器:微型计算机或相应的设备实验三、队列的建立、插入和删除(2学时)1. 实验目的要求掌握队列的表示和结构特点,描述方法及有关概念。
2. 实验主要内容实现队列的建立、插入、删除的操作算法。
3. 实验类别:专业基础4. 实验类型:验证5. 实验要求:必做6. 主要仪器:微型计算机或相应的设备实验四、模式串的匹配(3学时)1. 实验目的要求掌握串的结构特点和各种基本操作。
2. 实验主要内容实现串的模式匹配算法。
3. 实验类别:专业基础4. 实验类型:验证5. 实验要求:必做6. 主要仪器:微型计算机或相应的设备实验五、稀疏矩阵的转置(2学时)1. 实验目的要求掌握稀疏矩阵的结构特点,描述方法及有关概念。
数据结构实验大纲
数据结构实验大纲数据结构实验大纲1·实验目的1·1 熟悉数据结构的基本概念和算法1·2 掌握数据结构在实际问题中的应用1·3 培养分析和解决问题的能力2·实验环境2·1 编程语言:C/C++2·2 开发环境:Visual Studio/Xcode/Dev-C++ 3·实验内容3·1 实验一:线性表3·1·1 顺序表的基本操作3·1·2 单链表的基本操作3·1·3 循环链表的基本操作3·1·4 双向链表的基本操作3·2 实验二:栈与队列3·2·1 栈的基本操作3·2·2 队列的基本操作3·2·3 使用栈实现表达式求值3·2·4 使用队列实现约瑟夫环3·3 实验三:串与数组3·3·1 串的基本操作3·3·2 数组的基本操作3·3·3 字符串的模式匹配算法3·3·4 多维数组的应用3·4 实验四:树与图3·4·1 二叉树的基本操作3·4·2 二叉树的遍历算法3·4·3 霍夫曼树与哈夫曼编码3·4·4 图的存储结构与基本操作 3·4·5 图的遍历算法4·实验要求4·1 完成实验指导书中的所有实验内容4·2 书写实验报告,包括实验目的、实验环境、实验过程、实验结果分析和总结4·3 实验报告要求有清晰的实验步骤和相应截图或代码4·4 实验报告中需对实验结果进行说明和评价5·实验评分5·1 实验报告(60%)5·2 实验代码(40%)5·3 完成以上要求并提交实验报告和代码截图,得到及格分数6·附件6·1 实验指导书6·2 实验代码示例7·法律名词及注释●数据结构:指计算机中用于组织和存储数据的一种方式,它定义了数据之间的关系和操作。
《数据结构》实验指导书(Java语言版).
《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。
数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。
通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。
另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。
另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。
三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。
2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。
对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。
《数据结构课程设计》实验大纲[1]
《数据结构课程设计》课程实验大纲一、课程名称:数据结构课程设计二、课程性质:其他实践教学环节三、实验学时:36学时四、课程类型:独立设课五、课程适用专业:计算机科学技术专业、计算机科学与技术专业(实验班)、软件工程专业六、教学目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
七、实验教学项目表八、选题要求:在上面实验项目1、2、5中选一个小题做,在实验项目3、4中选择一个小题做,即一共需要完成两个小题。
九、课程设计报告要求:每个实验应该有相应的课程设计报告,包含如下内容:(1)问题描述及分析(2)功能模块及数据结构描述(3)主要算法流程描述(4)使用说明如何运行,如何输入测试数据,会出现的输出结果等,给出实例。
(5)实验及总结调试过程中遇到的主要问题有哪些?如何解决的。
有何结论?课程设计报告的格式要求1.字体设置要求为:(1)标题:黑体小四(2)正文内容:宋体小四号(3)表题与图题宋体五号(4)参考文献:宋体五号2.表格每个表格应有表序和表题,表序和表题应写在表格上方正中,表序后空一格书写表题。
3.插图插图必须精心制作,线条粗细要合适,图面要整洁美观。
每幅插图应有图序和图题,图序和图题应放在图位下方居中处。
4.各类参考文献的书写格式如下:连续出版物:[序号]作者.书名.刊名,年,卷号(期号):起~止页码专(译)著:[序号]作者.书名.(译者).出版地:出版者,出版年.起~止页码论文集:[序号]作者.文章名.文集名.会议地点,年.起~止页码学位论文:[序号]姓名.学位论文题目:[XX学位论文],授予单位所在地:授予单位,授予年十、课程设计成绩评定:准确评定成绩是课程设计的重点。
数据结构实验大纲
《数据结构实验》课程实验教学大纲一、课程基本信息课程名称:数据结构实验英文名称: Data Structure课程编码: B/B课程性质: 独立设课课程类别:专业必修课程课程总学时: 14课程总学分: 1适用专业:计算机科学与技术/网络工程方向先修课程:高级语言程序设计,离散数学,概率论与数理统计开课系部: 计算机科学与技术系二、实验课程的目的与要求这门课程的主要任务是培养学生的算法设计能力及良好的程序设计习惯。
通过学习,要求学生能够掌握典型算法的设计思想及程序实现,能够根据实际问题选取合适的存储方案设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。
学习这门课程,习题和实验是两个关键环节。
学生理解算法,上机实验是最佳的途径之一。
因此,实验环节的好坏是学生能否学好《数据结构》的关键。
通过实验课程更好的训练学生算法分析及算法设计的能力。
三、主要仪器设备与实验基本要求硬件要求:微型计算机一台(Pentium或以上)软件要求:Windows操作系统,Turbo C 或VC++6.0等实验要求:1.上机前要作好充分准备,根据实验题目编写好源程序。
2.对上机操作过程中可能出现的问题预先分析,确定调试步骤和测试方法,对运行结果如何分析等。
3.上机实验完成后,认真写出实验报告,对上机中出现的问题进行分析、总结。
4.上机过程中要遵守实验室的各项规章制度,爱护实验设备,服从指导老师安排。
5.本课程的实验过程中,不得进行游戏、上网等操作。
四、实验项目名称和课内学时分配注:设计性和综合性实验如课内学时不够,学生可利用开放实验室利用课余时间完成本次实验内容。
五、实验内容及要求实验项目一实验项目名称:简单算法实验实验项目的目的和要求:1.复习C语言指针的用法2.复习C语言结构体的用法3.理解时间复杂度分析的基本方法上机实验内容:1.用指针方式编写程序:从键盘输入N个整型数据,并存入数组,要求将N个数中最大的数与第一个数交换;将其中最小的数最后一个数交换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构课程实验》大纲一、《数据结构课程实验》的地位与作用“数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。
本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
由于以下原因,使得掌握这门课程具有较大的难度:(1) 内容丰富,学习量大,给学习带来困难;(2)贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点;(3)所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度;(4)隐含在各部分的技术和方法丰富,也是学习的重点和难点。
根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。
通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生组织数据及编写大型程序的能力。
实验学时为10。
二、《数据结构课程实验》的目的和要求不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。
实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。
为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。
数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。
在掌握基本算法的基础上,掌握分析、解决实际问题的能力。
三、《数据结构课程实验》内容课程实验共10学时,要求完成以下五个题目:实习一约瑟夫环问题(2学时)用循环链表实现约瑟夫环问题,熟悉链表结构的使用。
实习二八皇后问题(2学时)在8×8的棋盘上放置彼此不受攻击的8个皇后,熟悉递归与回溯程序设计方法。
实习三二叉树基本操作(2学时)创建、遍历、显示二叉树,通过二叉树的基本操作,掌握树结构的处理方法。
实习四哈夫曼编码与译码针对字符集A及其各字符的频率值(可统计获得)给出其中给字符哈夫曼编码,并针对一段文本(定义在A上)进行编码和译码,实现一个哈夫曼编码/译码系统。
实习五最小生成树问题(2学时)在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。
四、《数据结构课程实验》考核方式采用上机情况、程序质量、实习报告相结合的形式,满分为100分。
1.上机情况(30%)包括出勤情况、调试表现、是否上网、玩游戏。
2.程序质量(50%)3.实习报告(20%)《数据结构课程实验》指导书实习一线性表ﻫ本次实习的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。
通过本次实习还可帮助读者复习高级语言的使用方法。
1、城市链表[问题描述]将若干城市的信息,存入一个带头结点的单链表。
结点中的城市信息包括:城市名,城市的位置坐标。
要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。
[基本要求](1) 给定一个城市名,返回其位置坐标;ﻫ (2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。
ﻫ[测试数据]由学生依据软件工程的测试技术自己确定。
注意测试边界数据。
2、约瑟夫环[问题描述]ﻫ约瑟夫(Joeph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。
试设计一个程序求出出列顺序。
[基本要求]利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。
ﻫ[测试数据] m的初值为20;密码:3,1,7,2,4,8,4(正确的结果应为6,1,4,7,2,3,5)。
ﻫ[实现提示]ﻫ程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码。
设n≤30。
ﻫ[选作内容]向上述程序中添加在顺序结构上实现的部分。
3、线性表的逆置[问题描述]分别以不同存储结构实现线性表的就地逆置。
线性表的就地逆置就是在原表的存储空间内将线性表(a1,a2,a3,…,an)逆置为(an,an-1,…,a2,a1)。
[基本要求]用顺序存储结构实现线性表的就地逆置,并将结果输出。
[测试数据]由学生依据软件工程的测试技术自己确定。
注意测试边界数据,如空表。
ﻫ[实现提示]设三个连续的指针,分别指向当前结点、当前结点的前趋、当前结点的后继。
ﻫ[选作内容]ﻫ利用单链表作为存储结构。
首先先建立线性表的带头结点的单链表表示形式,之后在不借助辅助结点空间的情况下实现单链表的逆置,并将结果输出。
4、长整数运算ﻫ[问题描述]ﻫ设计一个程序实现两个任意长的整数求和运算。
ﻫ[基本要求]ﻫ利用双项循环链表实现长整数的存储,每个结点含一个整型变量。
任何整型变量的范围是-(215-1)~(215-1)。
输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。
[测试数据](1) 0;0;应输出“0”。
ﻫ (2) -2345,6789;-7654,3211;应输出“-1,0000,0000”。
ﻫ(3) -9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”。
ﻫ(4)1,0001,000;-1,0001,0001;应输出“0”。
(5) 1,0001,0001;-1,0001,0000;应输出“1”。
ﻫ[实现提示](1)每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出。
但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。
故可以在每个结点中仅存十进制数的4位,即不超过9999的非负整数,整个链表视为万进制数。
(2) 可以利用头结点数据域的符号代表长整数的符号。
用其绝对值表示元素结点数目。
相加过程中不要破坏两个操作数链表。
两操作数的头指针存于指针数组中是简化程序结构的一种方法。
不能给长整数位数规定上限。
[选作内容]ﻫ修改上述程序,使它在整型量范围是-(2n-1)~(2n-1)的计算机上都能有效地运行。
其中,n是由程序读入的参量。
输入数据的分组方法可以另行规定。
实习二栈、队列与递归算法设计仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实习的目的在于使读者深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们;同时还将巩固这两种结构的构造方法,接触较复杂问题的递归算法设计。
1、数制转换问题[问题描述]ﻫ将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。
例如:(1348)10=(2504)8 N N div 8N mod 8ﻫ1348 168 4ﻫ168 21 021 2 52 0 2从中我们可以看出,最先产生的余数4是转换结果的最低位,这正好符合栈的特性即后进先出的特性。
所以可以用顺序栈来模拟这个过程。
[基本要求]对于键盘输入的任意一个非负的十进制整数,打印输出与其等值的八进制数。
由于上述的计算过程是从低位到高位顺序产生的八进制数的各个数位,而打印输出,一般来说应从高位到地位进行,恰好和计算过程相反。
因此可以先将计算过程中得到的八进制数的各位进栈,待相对应的八进制数的各位均产生以后,再使其按顺序出栈,并打印输出。
即得到了与输入的十进制数相对应的八进制数。
ﻫ[测试数据]由学生依据软件工程的测试技术自己确定。
注意测试边界数据。
2、回文判断[问题描述]试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如‘序列 1 & 序列2’模式的字符序列。
其中序列1和序列2 中都不含字符‘&’,且序列2 是序列1的逆序列。
例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。
[实现提示]ﻫ首先,序列1进栈,然后序列1出栈并与序列2比较。
[测试数据]ﻫ由学生依据软件工程的测试技术自己确定。
注意测试边界数据,如序列1和序列2均为空串。
3、商品货架管理[问题描述]ﻫ商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。
上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。
[基本要求]针对一种特定商品,实现上述管理过程。
[实现提示]ﻫ用栈模拟货架和周转空间。
[测试数据]ﻫ由学生依据软件工程的测试技术自己确定。
注意测试边界数据,如空栈。
ﻫ4、括号匹配的检验[问题描述]假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即(()[ ])或ﻫ[([ ] [ ])]等为正确格式,[( ])或(((]均为不正确的格式。
检验括号是否匹配的方法可用“期待的紧迫程度”这个概念来描述。
例如:考虑下列的括号序列:ﻫ[ ( [ ] [ ] ) ]ﻫ1 2 3 4 5 6 7 8ﻫ当计算机接受了第1个括号以后,他期待着与其匹配的第8个括号的出现,然而等来的却是第2个括号,此时第1个括号“[”只能暂时靠边,而迫切等待与第2个括号相匹配的第7个括号“)”的出现,类似的,因只等来了第3个括号“[”,此时,其期待的紧迫程度较第2个括号更紧迫,则第2个括号只能靠边,让位于第3个括号,显然第3个括号的期待紧迫程度高于第2个括号,而第2个括号的期待紧迫程度高于第1个括号;在接受了第4个括号之后,第3个括号的期待得到了满足,消解之后,第2个括号的期待匹配就成了最急迫的任务了,……,依次类推。
可见这个处理过程正好和栈的特点相吻合。
ﻫ[基本要求]读入圆括号和方括号的任意序列,输出“匹配”或“此串括号匹配不合法”。
ﻫ[测试数据] ﻫ输入([ ]()),结果“匹配”输入 [()],结果“此串括号匹配不合法”[实现提示]设置一个栈,每读入一个括号,若是左括号,则作为一个新的更急迫的期待压入栈中;若是右括号,并且与当前栈顶的左括号相匹配,则将当前栈顶的左括号退出,继续读下一个括号,如果读入的右括号与当前栈顶的左括号不匹配,则属于不合法的情况。
在初始和结束时,栈应该是空的。
[选作内容]ﻫ考虑增加大括号的情况。
5、停车场管理[问题描述]设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。