DS课程设计题
- 格式:doc
- 大小:70.50 KB
- 文档页数:21
第二章线性表2、 1 填空题(1) 一半插入或删除得位置(2) 静态动态(3) 一定不一定(4) 头指针头结点得next 前一个元素得next2、 2 选择题(1)A (2) DA GKHDA EL IAF IFA(IDA) 辭氫鈿库谪妈蘚。
(3)D (4)D (5) D2、3头指针:在带头结点得链表中,头指针存储头结点得地址;在不带头结点得链表中,头指针存放第一个元素结点得地址;鰱邹剐賤緙雜靈。
头结点:为了操作方便,在第一个元素结点前申请一个结点,其指针域存放第一个元素结点得地址,数据域可以什么都不放;闡儐荣幟鉿馅貓。
首元素结点:第一个元素得结点。
2、4已知顺序表L递增有序,写一算法,将X 插入到线性表得适当位置上,以保持线性表得有序性。
void InserList(SeqList *L,ElemType x){int i=L->last;if(L->last>=MAXSIZE-1) return FALSE; //顺序表已满while(i>=0 && L->elem[i]>x){ L->elem[i+1]=L->elem[i];i--;}L->elem[i+1]=x; L->last++;}2、 5 删除顺序表中从i 开始得k 个元素int DelList(SeqList *L,int i,int k){int j,l;if(i<=0||i>L->last) {printf("The Initial Position is Error!"); return 0;} 皚轲贱騎裣孫滄。
if(k<=0) return 1; /*No Need to Delete*/if(i+k-2>=L->last) L->last=L->last-k; /*modify the length*/ 擬娆虧谪橼缮鲛。
第七章集合与搜索树1.第 137 页,第(5),建立37, 45, 91, 25, 14, 76, 56, 65为输入时的二叉搜索树,再从该树上依此删除76, 45,则树形分别如何?(a)建成的二叉搜索树0>)册1除76后(c)册]除45后2.第137页,第(6)试写一个判定任意给定的二叉树是否二叉搜索树算法。
int k=-8; bool fail=false;template <class T>void BTree<T>::IsBiTree(BTNode<T> *p, int &k,bool(if (p&& !fail) (IsBiTree(p->lchild, k,fail);if(k< p->element) k=p-〉element;else fail=true;IsBiTree(p-〉rchild,k,fail);}}3.第137页,第(8)以下列序列为输入,从空树开始构造AVL搜索树。
(DA, Z, B, Y, C, X(2)A, V, L, T, R, E, I, S, 0, K4.第 137页,第(12)5阶B-树的高度为2时,树中元素个数最少为多少?答:55.第137页,第(13)题从空树开始,以关键字序列:a, g, f, b, k, d, h, m, j, e, s, i, r, x ,建立(1) 4 阶B-树;(2) 5阶B-树。
⑵5阶B-树6.第137页,第(14)题从上题的4阶B-树上依次删除a, e, f, h。
第八章散列与跳表1.第154页,第(3)题设散列表ht[ll],散列函数h(key)=key % 11…采用线性探查法解决冲突,试用关键字值序列:70, 25, 80, 35, 60, 45, 50, 55 建立散列表。
Key 70 25 80 35 60 45 50 55h(Key) 4 3 3 2 5 1 6 00123456789 102.第154页,第(6)题给出用拉链方法解决冲突的散列表搜索操作的C++函数实现。
ds课设课课程设计一、教学目标本课程的教学目标是使学生掌握DS课设课的核心概念、原理和方法,培养学生运用DS知识分析和解决实际问题的能力。
具体目标如下:1.知识目标:学生能够准确理解并掌握DS课设课的基本概念、原理和方法,包括数据挖掘、机器学习、深度学习等内容。
学生能够了解DS课设课在不同领域的应用,如金融、医疗、电商等。
2.技能目标:学生能够运用DS课设课的知识和方法进行数据分析和处理,解决实际问题。
学生能够熟练使用相关工具和软件,如Python、R、Tableau等。
3.情感态度价值观目标:学生能够认识到DS课设课在现代社会的重要性,培养对数据科学的兴趣和热情。
学生能够遵循数据伦理和隐私保护的原则,负责任地使用数据和分析结果。
二、教学内容本课程的教学内容主要包括DS课设课的基本概念、原理和方法,以及相关应用案例。
具体安排如下:1.数据挖掘:介绍数据挖掘的基本概念、任务和算法,如分类、聚类、关联规则等。
案例:通过电商数据挖掘用户行为模式。
2.机器学习:讲解机器学习的基本原理和方法,包括监督学习、非监督学习、强化学习等。
案例:利用机器学习进行图像识别。
3.深度学习:介绍深度学习的基本概念和常用模型,如卷积神经网络、循环神经网络等。
案例:应用深度学习进行自然语言处理。
4.应用案例:分析DS课设课在不同领域的应用,如金融风险管理、医疗健康预测、电商个性化推荐等。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解基本概念、原理和方法,让学生掌握DS课设课的理论基础。
2.案例分析法:通过分析实际案例,让学生学会将理论知识应用于实际问题。
3.讨论法:学生进行小组讨论,培养学生的思考和沟通能力。
4.实验法:让学生动手进行实验,提高学生的实际操作能力和解决问题的能力。
四、教学资源本课程所需的教学资源包括:1.教材:选用权威、实用的教材,如《数据科学导论》、《机器学习》等。
2.参考书:提供相关领域的参考书籍,如《深度学习》、《数据挖掘》等。
DS考试⼤题集锦三. 解答题(共38分)17.(5分)请直接在以下⼆叉树中添加后序线索。
18.(10分)已知⼀个长度为12的表为(Ja n,F eb,M ar,Ap r,M ay,Ju n e,J uly,A ug,S ep,Oc t,N ov,D ec)(1)试将表中元素依次插⼊到⼀棵初始为空的⼆叉排序树(字符串之间按字典顺序⽐较⼤⼩)。
画出该⼆叉排序树,并求出等概率情况下查找成功的平均查找长度。
(2)设哈希表长度为13,哈希函数H(k)=?i/2?,其中i为关键字k中第⼀个字母在字母表中的序号(例如A和D的序号分别为1和4),⽤链地址法解决冲突。
请画出通过依次插⼊表中元素所构造的散列表,并求出在等概率情况下查找成功的平均查找长度。
20.(8分)若对序列(25,19,7,41,29,12,23,26)按升序排序,请分别给出(1)步长为4的⼀趟希尔排序的结果;(2)初始⼤根堆。
22.(6分)函数f22定义如下,其中函数调⽤Insert(L, i, k)在顺序表L的第i位置插⼊k。
void f22(SqList &L, int i) {if (i > 0) {f22(L, i-1);for (int k=1; k<=i; k++)Insert(L, i, k);}}设有空顺序表L =(),请写出调⽤递归函数f22(L,3)后(1)L的长度:(2)L =()23.(6分)算法f23(L)将带头结点的单链表L逆置。
请在画线处填空。
void f23(LinkList &L) {LinkList p = L->next;L->next = ;while ( p ) {LinkList s = ;p->next = L->next;L->next = ;p = s;}}24.(6分)s是⼀个升序静态查找表,请简要说明函数调⽤f24(s, 1, s.length, k)的意义。
实验二:线性表基本运算及应用实验项目的和要求:1.掌握线性表的特点2.掌握线性表的顺序存储结构和链式存储结构的基本运算。
3.尽可能考虑算法的健壮性4.实验报告中要写出测试数据、错误分析以及收获。
实验项目名称一:实现两种存储结构的主要基本运算1.用结构体类型描述线性表的两种存储结构2.完成课堂上所讲的两种存储结构的基本运算3.要求用二级菜单实现****************************** 1-------顺序表 ** 2-------链表 ** 0-------退出 ******************************请输入的选择:(0-2):线性表的链式存储############################### 1----前插建立链表## 2----后插建立链表 ## 3----访问第i个元素 ## 4----插入 ## 5----删除 ## 6----求线性表的表长 ## 0----退出 ###############################请输入选择(0-6):实验项目名称2:超市密码存储箱系统的设计与实现问题描述:1.顾客使用箱子的流程为“投一元硬币”--------“找到一个空箱子,同时产生密码”(系统完成)--------“打印密码,打开箱子”(系统完成)--------“取密码并存包,并关闭箱子,入超市购物”--------“购物结束”--------“输入密码”--------“找到对应箱子并打开”(系统完成)--------“取包”。
2.现要求设计程序模拟以上系统完成的功能①界面:在我们的模拟系统中,箱子在屏幕上被画出来,并编号,空箱为蓝色,被使用时变成红色,再变为空后则恢复蓝色;②通过按“1”键模拟顾客投币;③当空箱子被顾客申请得到的同时,系统自动生成6位数密码,此密码不能与正在被使用的任何一个箱子的密码相同。
3.设计分析在设计时,可利用链表来组织所有的箱子,所有的箱子以结点的形式表示,结点中存放箱号、密码(满箱有,空箱无)以及指向下一个结点的指针。
ds课程设计一、教学目标本章节的教学目标分为三个维度:知识目标、技能目标和情感态度价值观目标。
1.知识目标:通过本章节的学习,学生需要掌握DS课程的基本概念、原理和知识点,包括(具体列举5-8个知识点)。
2.技能目标:学生需要能够运用所学知识解决实际问题,具备(具体列举2-3种技能)。
3.情感态度价值观目标:培养学生对DS课程的兴趣和热情,增强学生的自主学习能力,培养学生的团队合作意识和批判性思维能力。
二、教学内容本章节的教学内容主要包括(具体列举5-8个知识点或概念),通过详细的教学大纲和进度安排,使学生系统地掌握DS课程的基本知识和技能。
三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
通过多样化的教学方法,帮助学生更好地理解和应用所学知识。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备适当的教学资源。
教学资源包括教材、参考书、多媒体资料和实验设备等。
我们将根据教学目标和内容需求,合理利用这些资源,提高教学效果。
五、教学评估本章节的教学评估将采用多种方式,以全面客观地评价学生的学习成果。
评估方式包括但不限于:1.平时表现:通过课堂参与、提问回答、小组讨论等环节,评估学生的出勤和积极性。
2.作业:布置适量的作业,包括练习题、案例分析、小项目等,评估学生的理解和应用能力。
3.考试:安排一次期中考试和一次期末考试,以评估学生对章节知识的掌握程度。
4.实验报告:如有实验环节,要求学生提交实验报告,评估学生的实验操作和分析能力。
评估标准将根据课程目标和具体内容进行制定,确保评估结果的公正性和客观性。
六、教学安排本章节的教学安排将根据课程目标和学生的实际情况进行设计。
具体安排如下:1.教学进度:按照教学大纲和进度表,合理安排每个课时的教学内容和活动。
2.教学时间:根据学生的作息时间和课程安排,选择合适的时间段进行教学。
数据结构课程设计课题名称深度与广度优先搜索:迷宫问题专业计算机科学与技术学生姓名沈涛班级B计122学号1210704218目录1简介 (1)2算法说明 (1)3测试结果 (2)3.1 测试输入 (2)3.2 测试目的 (2)3.3 正确输出 (2)3.4 实际输出 (2)4分析与探讨 (2)4.1 测试结果分析 (2)4.2 探讨与改进 (3)附录:源代码 (3)目录生成的方式为:右击,在快捷菜单中选择“更新域”,在“更新目录”对话框中选择“更新整个目录”。
接着选中目录内容,修改字体和字号,中文选择宋体四号,不加粗;英文字体选择Times New Romman,四号,不加粗。
再修改段落,行间距为25磅。
其余项默认即可1 简介深度优先搜索(Depth_First Search,简称DFC)是一个递归过程。
首先访问一个顶点v i并将其标记为已访问过,然后从v i的任意一个未被访问的邻接点出发进行深度优先搜索遍历。
如此执行,当v i的所有邻接点均被访问过时,则退回到上一个顶点v k,从v k的另一未被访问过的邻接点出发进行深度优先搜索遍历。
如此执行,直到退回到初始点并且没有未被访问过的邻接点为止。
广度优先搜索(Breadth-First-Search,简称BFS)过程为:首先访问初始点v i,并将其标记为已访问过,接着访问v i的所有未被访问过的邻接点,其访问顺序可以任意,假定依次为v i1,v i2,…,v in,并均标记为已访问过,然后再按照v i1,v i2,…,v in的次序,访问每一个顶点的所有未被访问的邻接点,并标记为已访问过,以此类推,直到图中所有和初始点v i 有路径相通的顶点都被访问过为止。
比较两者过程可以发现一个共同点是,总以某个已被访问过的顶点作为当前顶点来搜索与其相邻的未被访问的顶点。
而区别仅在于对当前顶点的选择策略有所不同,BFS总是优先选择最早访问的顶点作为当前顶点来搜索邻接点,而DFS则是将优先选择最近访问顶点作为当前顶点来搜索邻接点。
6ds课程设计一、课程目标知识目标:1. 让学生掌握六年级数学课程中关于数据的处理和分析的基本知识,特别是掌握6DS(六大数据分析技能)的概念及应用。
2. 学生能够运用统计图表、平均数、中位数、众数等数据描述和分析方法,对实际问题进行深入探讨。
3. 学生能理解并运用简单概率的计算方法,解释生活中的随机现象。
技能目标:4. 培养学生运用信息技术工具(如电子表格软件)处理数据的能力,包括数据录入、整理、分析及图表生成。
5. 提升学生的问题解决能力,使其能通过数据分析来支持观点、作出决策。
6. 培养学生的团队合作能力,通过小组讨论和协作完成数据分析任务。
情感态度价值观目标:7. 培养学生对待数据的严谨态度,认识到数据在生活中的重要性和实际应用价值。
8. 激发学生主动探索数据的兴趣,培养其观察、思考、提问的积极学习习惯。
9. 引导学生形成基于数据说话的意识,培养其客观、理性的思维方式和决策习惯。
课程性质:本课程以六年级数学知识为基础,结合实际生活案例,强调数据处理与分析技能的培养,注重知识与实践的结合。
学生特点:六年级学生对数学有一定的基础理解,具备初步的数据分析能力,对生活中的数据现象有较强的好奇心。
教学要求:教学过程中需注重启发式教学,通过案例分析、小组合作等方式,引导学生主动学习,提高其数据分析和解决问题的能力。
同时,注重学习成果的评估,确保学生达到预设的课程目标。
二、教学内容1. 数据收集与整理:运用课本中的案例,教授学生如何收集数据,并通过电子表格软件进行数据整理,包括数据清洗、分类和排序。
- 教材章节:第三章 数据的收集与整理2. 统计图表的绘制与应用:介绍条形图、折线图、饼图等常用统计图表的绘制方法及其应用场景。
- 教材章节:第四章 统计图表3. 平均数、中位数、众数的计算与应用:通过实例,让学生掌握这些数据描述统计量的计算方法及其在生活中的应用。
- 教材章节:第五章 数据的描述统计4. 概率初步:讲解简单概率的计算方法,结合实例使学生理解概率在描述随机现象中的作用。
gmat ds题
在GMAT的Data Sufficiency(DS)题型中,每个问题都包含两个声明。
考生需要判断这些声明是否提供了回答特定问题的足够信息。
这种题型要求考生在逻辑推理和数学分析方面有扎实的功底。
以下是一个GMAT DS题目的示例:
问题:一个班里有20个学生,每个学生至少选修了A或B这两门课程中的一门。
如果想知道这个班里同时选修了A和B的学生数量,我们需要知道什么信息?
声明一:班里选修了A课程的学生数量。
声明二:班里选修了B课程的学生数量。
要回答这个问题,我们需要判断这两个声明是否提供了足够的信息。
如果一个班里有20个学生,每个学生至少选修了A或B这两门课程中的一门,那么我们可以使用容斥原理来计算同时选修了A和B的学生数量。
容斥原理的基本思想是通过两个集合各自的元素个数和它们的交集个数来计算它们的并集个数。
设选修了A课程的学生数量为x,选修了B课程的学生数量为y,那么根据题目条件有:
x + y - 同时选修了A和B的学生数量= 20
如果我们知道x和y的具体数值,就可以直接计算出同时选修了A和B的学生数量。
因此,仅仅知道班里选修了A课程的学生数量或班里选修了B课程的学生数量是不够的,我们需要知道这两个数值才能得出结论。
所以答案是:声明一和声明二都不够充分。
学号课程设计20 ~20 学年第学期题目:教学系:专业班级:指导教师:学生姓名:年月日课程设计任务书学生姓名专业班级指导教师杨帆工作单位武汉理工大学华夏学院题目:初始条件:已完成《商务数据库应用》课程的学习。
要求完成的主要任务:(包括设计计算、图纸绘制、程序编制、说明书撰写等具体要求)主要任务:以一个具体的应用为背景,完成数据库设计,添加一定的数据到设计出的表中,使用添加、修改、删除和查询语句,为连接查询建立视图,制定备份和还原计划。
要求:(1)具体的应用必须是现实存在的,比如图书管信息管理、订票信息管理、医院信息管理、教务信息管理、学生选课信息管理等。
(2)数据库的设计分为两次建模过程,首先建立E-R图,然后转换为关系模型,设计报告中要体现出来。
(3)SQL语句要求规范,标点正确,查询语句应包含简单查询、连接查询、子查询、复合条件查询。
语句内容自定,并写出语句的功能。
(4)报告的文档包括:数据库的应用背景介绍,数据库设计方案,添加、修改、删除和查询语句和语句的功能说明,建立的视图内容和名称,备份与还原计划描述。
时间安排:课程设计共3周时间:17、18、19 6月4日——6月21日(1)选题时间:6月4日——6月21日要求: 6月10日确定选题。
(2)课程设计上机辅导:6月10日——6月21日(3)答辩 6月21日要求:6月21日提交课程设计报告书。
指导教师签名:日期: 6月21日教研室主任签名:日期: 6月21日图书管信息管理数据库设计1.应用背景当今社会,新的知识、信息,新的科学技术的传播和交流,很重要的一个途径是通过书刊资料来进行的。
任何科学理论研究都必须从收集、掌握、熟悉图书资料开始,掌握前人已经取得的成果,掌握国内外科学研究的现状,掌握相邻学科所提供的新的有利条件等有关文献资料,以便在前人研究成果的基础上,提出新问题,作出新概括,取得新发展,获得新结论。
这就必须从记载已有科技成果的图书资料中去学习、消化和掌握自己所需要的优秀成果,以开阔眼界、扩展思路、受到启示,并以此为起点,去攀登新的科学技术高峰在大学中,图书馆使学生能够在课余时间继续进行综合性和持续性的学习。
“数据结构”课程设计题目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、括号匹配的检验[问题描述]假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即(()[ ])或[([ ] [ ])]等为正确格式,[( ])或(((]均为不正确的格式。
检验括号是否匹配的方法可用“期待的紧迫程度”这个概念来描述。
例如:考虑下列的括号序列:[ ( [ ] [ ] ) ]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个括号的期待匹配就成了最急迫的任务了,…… ,依次类推。
可见这个处理过程正好和栈的特点相吻合。
[基本要求]读入圆括号和方括号的任意序列,输出“匹配”或“此串括号匹配不合法”。
[测试数据]输入([ ]()),结果“匹配”输入 [()],结果“此串括号匹配不合法”[实现提示]设置一个栈,每读入一个括号,若是左括号,则作为一个新的更急迫的期待压入栈中;若是右括号,并且与当前栈顶的左括号相匹配,则将当前栈顶的左括号退出,继续读下一个括号,如果读入的右括号与当前栈顶的左括号不匹配,则属于不合法的情况。
在初始和结束时,栈应该是空的。
[选作内容]考虑增加大括号的情况。
4、停车场管理[问题描述]设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
[测试数据]设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3, 20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。
每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,‘A’表示到达;‘D’表示离去,‘E’表示输入结束。
[基本要求]以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表实现。
[实现提示]需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。
输入数据按到达或离去的时刻有序。
栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
[选作内容](1)两个栈共享空间,思考应开辟数组的空间是多少?(2)汽车可有不同种类,则它们的占地面积不同,收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。
(3)汽车可以直接从便道上开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。
(4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。
5、简单行编辑程序。
[问题描述]文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。
限制这些操作以行为单位进行的编辑程序称为行编辑程序。
被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总能实现。
一种解决方法是逐段地编辑。
任何时刻只把待编辑文件的一段放在内存,称为活区。
试按照这种方法实现一个简单的行编辑程序。
设文件每行不超过320个字符,很少超过80字符。
[基本要求]实现以下4条基本编辑命令:(1)行插入。
格式:i<行号><回车><文本><回车>将<文本>插入活区中第<行号>行之后(2)行删除。
格式:d<行号1>[□<行号2>]<回车>删除活区中第<行号1>行(到第<行号2>行)。
两种格式的例子是:“d10↙”和“d10□14↙”(3)活区切换。
格式:n<回车>将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
(4)活区显示。
格式:p<回车>逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是否继续显示以后各页(如果存在)。
印出的每一行要前置以行号和一个空格符,行号固定占4位,增量为1。
各条命令中的行号均须在活区中各行行号范围之内,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。
[测试数据]由学生依据软件工程的测试技术自己确定。
注意测试边界数据,如首行、尾行。
[实现提示](1)设活区的大小用行数activemaxlen(可设为100)来描述。
考虑到文本文件行长通常为正态分布,且峰值在60到70之间,用320×activemaxlen大小的字符数组实现存储将造成大量浪费。
可以以标准行块为单位为各行分配存储,每个标准行块含81个字符。
这些行块可以组成一个数组,也可以利用动态链表连接起来。
一行文字可能占多个行块。
行尾可用一个特殊的ASCII字符(如(012)8)标识。
此外,还应记住活区起始行号。
行插入将引起随后各行行号的顺序下推。
(2)初始化过程包括:请用户提供输入文件名(空串表示无输入文件)和输出文件名,两者不能相同。
然后尽可能多地从输入文件中读入各行,但不超过activemaxlen-x。
x的值可以自定,例如20。
(3)在执行行插入命令的过程中,每接收到一行时到要检查活区大小是否已达activemaxlen。
如果是,则为了在插入这一行之后仍保持活区大小不超过activemaxlen,应将插入点之前的活区部分中第一行输出到输出文件中;若插入点为第一行之前,则只得将新插入的这一行输出。
(4)若输入文件尚未读完,活区切换命令可将原活区中最后几行留在活区顶部,以保持阅读连续性;否则,它意味着结束编辑或开始编辑另一个文件。
(5)可令前三条命令执行后自动调用活区显示。
[选作内容](1)对于命令格式非法等一切错误作严格检查和适当处理。
(2)加入更复杂的编辑操作,如对某行进行串替换;在活区内进行模式匹配等,格式可以为S<行号>@<串1>@<串2><回车>和m<串><回车>。
6、校园导游程序[问题描述]用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
[基本要求](1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息。
[选作内容](1)求多个景点的最佳(最短)游览路径。
(2)区分机动车道和人行道。
(3)实现导游图的仿真界面。
7、员工管理系统[问题描述]每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。
系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
[基本要求](1)排序:按不同关键字,对所有员工的信息进行排序。
(2)查询:按特定条件查找员工。
(3)更新:按编号对某个员工的某项信息进行修改。
(4)插入:加入新员工的信息。
(5)删除:按编号删除已离职的员工的信息。
[选作内容]实现图形用户界面。
8、算术表达式求值[问题描述]一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。
假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#。
引入表达式起始、结束符是为了方便。
编程利用“算符优先法”求算术表达式的值。
[基本要求](1)从键盘读入一个合法的算术表达式,输出正确的结果。
(2)显示输入序列和栈的变化过程。
[选作内容]扩充运算符集合。
引入变量操作数。
操作数类型扩充到实数。
9、二叉树及应用(1)二叉树的建立与遍历[问题描述]建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。
[基本要求]从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。