《数据结构》实验教学大纲.doc
《《数据结构》实验教学大纲.doc》由会员分享,可在线阅读,更多相关《《数据结构》实验教学大纲.doc(82页珍藏版)》请在三一办公上搜索。
1、 数据结构实验教学大纲实验学时:32 实验个数:7 实验学分: 1课程性质:专业必修课 适用专业: 计算机科学与技术教材及参考书:1. 数据结构(C语言版),严蔚敏 吴伟民,北京:清华大学出版社,20042. 数据结构题集(C语言版)实习题部分,北京:清华大学出版社,2004;3. 数据结构实验教程,王玲 刘芳等著,成都:四川大学出版社,2002大纲执笔人:刘芳 大纲审定人:郭涛一、实验课的性质与任务本课程实验大纲是面向计算机相关专业学生开设的数据结构实验课计划指导大纲,是依据数据结构课程教学计划指导大纲编制。计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习编写计算机程序仅
2、仅了解计算机语言是不够的,还必须掌握数据组织、存储和运算的一般方法,这是数据结构课程中学习和研究的内容。由于数据结构的原理和算法较抽象,而该课程一般在本科低年级开设,对于计算机程序设计知识的初学者,理解和掌握其中的原理就显得较为困难。数据结构实验课程着眼于数据结构原理和应用的结合点,使读者学会如何将书上学到的知识用于解决实际问题,培养软件工作需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。本实验课程主要结合数据结构课程的教学大纲的相应内容,设计了7个实验(包括验证型、综合型、设计型实验),力求提高学生的动手能力,做到理论和实践相结合。使学生在实验过程中进
3、一步掌握典型数据结构的逻辑结构、存储结构及算法的程序实现,并训练问题的综合分析能力和编程能力,形成良好的编程风格,为后续课程的学习奠定坚实的理论和实践基础。二、实验课程目的与要求1. 实验目的根据数据结构课程的任务与要求,帮助学生拓宽知识面。并达到以下教学要求:(1) 学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术;掌握各种基本数据结构的逻辑结构和存储结构及相应算法。(2) 本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚、正确易读,符合软件过程的规范,从而培养学生的数据抽象
4、能力;(3) 通过若干数据结构应用实例,引导学生学习数据类型的使用,为今后学习面向对象的程序做一些铺垫。2. 实验要求(1) 熟悉各种基本数据结构的定义,性质和特点,初步掌握算法分析的基本技巧以及如何根据实际问题设计一个有效的算法。(2) 会书写类C语言的算法,并将算法转变为程序实现。(3) 正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现,有较强的逻辑分析能力。(4) 针对问题的不同选择合适的数据结构,提高算法设计的能力和动手实验的技能。三、实验内容安排:实验一 抽象数据类型的表示与实现(基本操作、验证型实验 2学时)1.目的要求:(1) 熟悉类C语言的描述方法,学会将类C语言描
5、述的算法转换为C源程序实现;(2) 理解抽象数据类型的定义,编写完整的程序实现一个抽象数据类型(如三元组);(3) 认真阅读和掌握本实验的参考程序,上机运行程序,保存和打印出程序的运行结果,并结合程序进行分析。2.实验内容:(1) 编程实现对一组从键盘输入的数据,计算它们的最大值、最小值、平均值等,并输出。要求:将计算过程写成一个函数,并采用引用参数实现值的求解。#include#define N 100float Average(int numbleN,int a) float sum=0;int i;for(i=0;ia;i+)sum=sum+numblei;return sum/a;in
6、t Max(int numbleN,int a) int i;int max= numble0;for(i=1;ia;i+) if(max numble i) max= numble i;return max;int Min(int numble N,int a) int i;int min= numble 0;for(i=1;i numble i) min = numble i;return min;int main() int i=0; int numbleN; printf(请输入数字(-1结束)n ); scanf(%d,&numblei); while(numblei!=-1) i+
7、; scanf(%d,&numblei); printf(平均值是: );printf(%fn, Average(numble,i); printf(最大值是: ); printf(%dn,Max(numble,i); printf(最小值是: ); printf(%dn,Min(numble,i);(2) 编程实现抽象数据类型三元组的定义、存储和基本操作,并设计一个主菜单完成各个功能的调用。 #include h1.htypedef int ElemType;typedef ElemType *Triplet;Status InitTriplet (Triplet &t,ElemType v
8、1,ElemType v2,ElemType v3)t=(ElemType *)malloc(3*sizeof(ElemType);if(!t) return OVERFLOW;t0=v1;t1=v2;t2=v3; return OK;Status DestroyTriplet(Triplet &t)free(t); t=NULL;return OK;ElemType get(Triplet &t,int i)ElemType e;if (i3) printf(i值不合法n);e=ti-1;return e;Status put(Triplet &t,int i,ElemType e) if
9、(i3) printf(i值不合法n);ti-1=e;return OK;Status IsAscending(Triplet t)return (t0=t1)&(t1=t1)&(t1=t2);ElemType Max(Triplet t)ElemType e;e=(t0=t1)?(t0=t2)?t0:t2):(t1=t2)?t1:t2);return e;ElemType Min(Triplet t)ElemType e;e=(t0=t1)?(t0=t2)?t0:t2):(t1=t2)?t1:t2);return e;void main()Triplet p;ElemType x;ElemT
10、ype v1,v2,v3;int select,i;printf(输入三个数,建立一个三元组n);scanf(%d%d%d,&v1,&v2,&v3);if (InitTriplet(p,v1,v2,v3)=OVERFLOW) printf(分配失败,退出程序!);else do printf(1:取三元组第i个元素n);printf(2:判断三元组元素是否递增n);printf(3:求最大值n);printf(4:求最大值n);printf(5:置换第i个元素n);printf(0:结束!n);printf(请输入选择!n);scanf(%d,&select);switch (select)c
11、ase 1: printf(ni=); scanf(%d,&i); printf(第%d个元素的值为:%dn,i,get(p,i); break;case 2: if (IsAscending(p)=1) printf(三元组递增有序n); else printf(三元组非递增有序n); if (IsDescending(p)=1) printf(三元组递减有序n); else printf(三元组非递减有序n); break;case 3: printf(最大值是:%dn,Max(p); break;case 4: printf(最小值是:%dn,Min(p); break;case 5:
12、printf(ni=); scanf(%d,&i); printf(nx=); scanf(%d,&x); put(p,i,x); printf(置换第%d个元素后的3个元素分别为:%d,%d,%dn,i,p0,p1,p2); break;case 0: printf(操作结束!); break;default:printf(输入选择出错!n);/ 结束switch while(select!=0); / 结束whileDestroyTriplet(p);/ 结束main3.主要仪器设备及软件(1) PC机(2) Turbo C 2.0 或Visual C+实验二 线性表及其实现(基本操作、验
13、证型实验 4学时)1.目的要求:(1) 熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现,以线性表的各种操作(建立、插入、删除等)的实现为实验重点;(2) 通过本次实验帮助学生加深对顺序表、链表的理解,并加以应用;(3) 掌握循环链表和双链表的定义和构造方法2. 实验内容:(1) 编程实现线性表两种存储结构(顺序存储、链式存储)中的基本操作的实现(线性表的创建、插入、删除和查找等),并设计一个菜单调用线性表的基本操作。 链式存储:#include#includeint initList(LinkList &L);void listElemOutput_L(LinkList &L
14、);int listInsert_L(LinkList &L,int i,ElemType e);int listDelete_L(LinkList &L,int i);int locateElem_L(LinkList &L,int i );int menu();int main()LinkList La; int mchioce; mchioce=menu(); while ( mchioce!=0) switch(mchioce) case 1: initList(La); break; break; case 2: int i,j; printf(请输入插入的位置和元素:); scan
15、f(%d%d,&i,&j); listInsert_L(La, i, j); break; case 3: int k; printf(请输入删除元素的位置:); scanf(%d,&k); listDelete_L(La, k); break; case 4: int a; printf(请输入所查找元素的位置:); scanf(%d,&a); locateElem_L(La,a ); break; case 5: listElemOutput_L(La); break; default: printf(输入错误!); break; system(cls); mchioce=menu();
16、system(PAUSE); int initList(LinkList &L) /*构造一个空的线形链表L。*/Link tempp=NULL;if(!(tempp=(Link)malloc(sizeof(LNode)printf(allocation of memory fail!);return ERROR;tempp-data=0;/*初始化头结点*/tempp-next=NULL;L.len=0;L.head=tempp;L.tail=tempp;printf(链表创建成功!n);int j ,i;int q;printf(输入线性表的元素个数:n); scanf(%d,&j);pr
17、intf(输入新的元素:n); for(i=1;idata = q; p -next=L.tail-next;L.tail-next =p;L.tail=L.tail-next;+L.len; return OK; void listElemOutput_L(LinkList &L) /*int i=1; for(;inext-data);p.head=p.head-next; */ Link q; q=L.head-next; while(q) printf(t %d,q-data); q=q-next; printf(n); system(PAUSE);return; int listIn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验教学 大纲
链接地址:https://www.31ppt.com/p-2887979.html