《数据结构与算法》实验大纲。
一)远程教育辅导教师基本条件(要求)
1. 熟练掌握c语言及其调试开发环境;
2. 具有用c语言编写调试中等规模以上(数百行源码)程序的经验;
3. 掌握《数据结构与算法》课程有关的知识, 具有较好的算法设计和分析的能力;
4. 有一定的教学经验。
二)算法实验要求综述。
根据目前远程教育计算机专业的学生的实际情况和他们的 c语言基础,严格按照本科教学要求进行算法实验上机并完成相应的实验报告, 对多数学生是有一定困难的。 为适应不同基础的学生循序渐进地学习,我们把实验要求分成四个层次, 希望学生不断往更高层次要求自己, 最终能达到本课程的实验基本要求。
这四个层次的要求是:
一。 以熟练使用c语言的开发环境(如tc2.0或vc6.0)为主,进行简单问题的程序设计和调试分析。
二。 编写主程序调用调试教材中描述并在课堂中详细讲解过的算法。
三。 完成习题中的算法设计题并书写实验报告。
四。 独立完成一个小的应用系统并规范书写实验报告,以进一步提高算法描述和算法分析的能力
以上一至三层次作为本课程的基本实验要求,第四层次作为有能力的学生的提高要求。实验辅导教师也可以根据当地学生的具体情况, 本着能提高学生两个能力(c语言的编程和调试能力, 算法设计和分析能力)的目的, 循序渐进地引导学生掌握算法和程序的上机实验, 并参考《题集》的实验报告范例书写实验报告。
按教学计划,本课程实验课时为15学时,安排6-7次实验。由于课时数有限,要求学生在实验前作好充分准备,否则很难在两个学时内完成相关的上机与调试。上机前的准备工作主要有两项:
一是仔细阅读理解书中的相关算法,需要写解题算法的还要在纸上写好算法;二是准备好要调试算法的数据,并写好调用算法的主程序。
实验1至实验6都分为a、b两个实验。a实验对应第二层次的能力培养训练,b实验对应第三层次的能力培养训练。
下面就每一层次的要求作如下说明。
一。 以熟练使用c语言的开发环境(如tc2.0或vc6.0)为主,进行一般问题的程序设计和调试分析。
该能力实际上是预修课c语言的要求,由于有相当部分学生c语言掌握不是很好, 影响了数据结构算法的描述和理解。 所以开始应该注意弥补c语言的能力。 根据经验, c语言中函数定义与调用(形参和实参的对应等), 指针, 类型定义与使用、结构的定义和使用、动态内存的申请等难点却是数据结构算法描述的重点, c语言的这些障碍严重影响了学生对数据结构与算法的理解,也影响了学习数据结构的兴趣。
所以实验指导教师在鼓励学生主动补习c语言知识的同时, 有意识安排一些符合学生基础的程序设计练习作为本课程实验的前导补充。 与本课程的相公的算法题目可以推后几周上机。
本实验教学计划的预备实验(即实验0)是为完成该任务而设计的。如果学生的困难比较大,尽量在教学计划时间以外鼓励学生多做上机,打好基础。
二。 编写主程序调用调试教材中描述并在课堂中详细讲解过的算法。
为加深对课堂讲解的算法的理解,选择部分(尤其是基础部分,如线性表,堆栈与队列等的顺序和链式存储的最常用的基本操作)算法进行上机调试,如第二章的initlist_sq、listinsert_sq和listdelete_sq一组算法和第三章的initstack、gottop、push和pop一组算法等。这些算法是后面章节更复杂算法的基础(如树和图中的算法),算法的积累过程象滚雪球,所以基础必不可少。
调试这些算法要注意两点。一是适当修改教材算法中的非c语言的语句和增加部分局部变量的定义。由于算法的描述是类c语言的,所以要改为完整的c语言的函数。
不过需要修改(增加)的地方不多。二是书写一个主程序来调用并调试描述算法的函数。主程序的设计要根据算法的功能和调试需要来编写。
本实验教学计划的实验1至实验6的a实验是为完成该任务而设计的。
三。 完成习题中的算法设计题并书写实验报告。
我们在《题集》的每章的算法设计题中选择少量“小问题”的算法设计练习,以培养和提高学生自己动手写算法的能力。这些算法或者与教材中基本算法类似,或者是延伸,或者是它们的应用。
做这些算法设计题时,要注意过程的完整性:题目理解、功能分析、算法思想、描述算法的c函数、调用算法的主程序、运行结果、调试过程的体会等等,都尽可能书写出来。养成书写文档的好习惯。
本实验教学计划的实验1至实验6的b实验是为完成该任务而设计的。
四。 完成一个小的应用系统并规范书写实验报告,以进一步提高算法描述和算法分析的能力
本实验教学计划没有列出相应的实验内容。有余力的学生可以选择一到二个《题集》中的实习题做。
三)算法实验内容与指导。
1) 实验目的:回顾复习c语言的重点与难点,熟悉c程序调试环境,掌握一个完整程序的构成,为以后的实验打下基础。
2) 实验要求:熟练掌握c语言及其上机调试环境(如tc2.0或vc6.0)的操作使用。
3) 实验内容:根据学生基础,选择若干编程题(如c语言中函数定义与调用、 指针和类型的定义与使用、结构的定义、动态内存的申请等),进行编译、连接和运行调试。掌握动态跟踪调试方法。
4) 实验指导:可以选择简单的问题编程,不要求算法的难度,但要能使用相关c语言成分。把注意力集中在编译和连接错误的修改,运行数据的输入输出和结果分析上。
1. a实验: 算法调试。
1) 实验目的:加深理解线性表的顺序表示与链式表示的意义和区别,理解用它们表示时插入与删除操作的算法。
2) 实验要求:理解initlist_sq、listinsert_sq、listdelete_sq和initlist_l、listinsert_l、listdelete_l等算法。
3) 实验内容:设计一组输入数据并编写主程序分别调用上述算法(顺序表示的算法为initlist_sq、listinsert_sq、listdelete_sq等,链式表示的算法为initlist_l、listinsert_l、listdelete_l等),调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。
4) 实验指导:顺序表示和链式表示可以分成两个程序来调试(见示例程序1和2)。教材中的算法一般要作少许修改才能运行,这些修改包括:
1、算法函数中局部变量的定义,如listinsert_sq中的i,newbase,p,q等;
2、可能出现的“类”c语言的语句,必须改为c语言语句,如数据交换语句x>y;
3、如果采用tc作为c语言调试环境,算法函数的“引用”类型参数要改为指针类型参数并修改程序中的使用方法,如listinsert_sq中的参数&l要改为*l。程序中使用l方法的修改见示例程序1。
一个简单程序通常主要由三部分构成:
1、常量定义(#define),类型定义(typedef)及函数原型定义(#include);
2、算法函数,即initlist_sq、listinsert_sq、listdelete_sq等;
3、主函数。
示例程序1,initlist_sq、listinsert_sq、listdelete_sq在tc2.0中的调试:
#include ""
#include ""
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
#define list_init_size 10
#define listincrement 4
typedef int status;
typedef int elemtype;
typedef struct
status listinsert_sq(sqlist *l,int i,elemtype e)
q=&(l->elem[i-1]);
for(p=&(l->elem[l->length-1]);p>=q;--p) *p+1)=*p;
*q=e;++l->length;
return ok;
status listdelete_sq(sqlist *l,int i,elemtype *e){
elemtype *p,*q;
if ((i<1)||i>l->length)) return error;
p=&(l->elem[i-1]);
数据结构与算法考试大纲
数据结构与算法 考试大纲。题型分布 1 选择题 15题,每题2分,共30分。2 填空题 10空,每空2分,共20分。3 简答题 4小题,每题6 8分,共30分。4 设计题 2小题,每题10分,共20分。第1章绪论。1 数据 数据元素 数据项 数据类型 抽象数据类型等基本概念和术语的含义 2 数据结构...
《数据结构与算法》考试大纲
计算机系考试大纲计算机网络与通信。计算机网络与通信 考试大纲。一 考试说明。考试对象 计算机科学与技术专业及相近专业专科生命题原则 1 在教学大纲和考试大纲所规定的知识点范围内命题。2 试题的考察要求覆盖面广 区分度高。3 试题兼顾各个能力层次,难易程度和题量。适当,按难易程度分为四个层次 容易占3...
数据结构与算法考试大纲
i.考查目标。考试目标是了解常见数据结构的概念,掌握数据结构的构造方法以及相应的算法思想,会对重点数据结构的操作方法和算法进行简单的伪 编写。ii.考试形式和试卷结构。一 试卷总分及考试时间。试卷总分为150分,考试时间180分钟。二 答题方式。答题方式为闭卷 笔试。iii 考查内容。第一章 线性表...