欢迎来到天天文库
浏览记录
ID:8444659
大小:172.00 KB
页数:52页
时间:2018-03-28
《《数据结构》实验指导》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《数据结构》C语言版实验指导目 录《数据结构》上机实验的目的和要求1实验一顺序结构线性表的实现2实验二单链表的插入和删除8实验三栈的实现11实验四二叉树操作实现14实验五哈夫曼树的建立与编码实现18实验六图的遍历操作28实验七排序34实验八查找40《数据结构》课程设计45《数据结构》上机实验的目的和要求通过上机实验加深对课程内容的理解,增加感性认识,提高软件设计、编写及调试程序的能力。要求所编的程序能正确运行,并提交实验报告。实验报告的基本要求为:1、需求分析:陈述程序设计的任务,强调程序要做什么,明确规定:(1)输
2、入的形式和输出值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括正确的输入输出结果和错误的输入及输出结果。2、概要设计:说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。3、详细设计:提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。4、调试分析:(1)调试过程中所遇到的问题及解决方法;(2)算法的时空分析;(3)经验与体会。5、用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤。6、测试结果:列出对于给定的输入所产生的输出结果。若有可能,测试随输入规模的增长所用算法
3、的实际运行时间的变化。50实验一顺序结构线性表的实现一、目的:掌握顺序表的表示方法,存储结构及其基本操作的实现。二、要求:建立一顺序表,实现其基本操作。三、示例程序:说明:一个完整的程序是由输入,处理,输出三部分组成的,每个部分还可以分为若干小部分,如输入,又可以分为声明,初始化变量,接收数据,预处理数据等。书上列出的算法是解决问题的基本思路,也可以是解决问题的处理过程,并未给出详细的输入与输出,这一部分需要在练习过程中加入,在解决实际问题时,还需要做灵活的处理。C语言本身有自身的特点,其基本思想是与机器的指令码相关的
4、。要理解程序时必须明确这些特点,并从算法所根据的数据结构下手,然后才能明白给出的程序中其算法的意义。本例程序用于演示顺序表的基本操作,希望同学们好好掌握。#include#include#include#include#defineLIST_INIT_SIZE50#defineLISTINCREMENT10#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineCANCEL0typed
5、efstruct{int*elem;intlength;intlistsize;}sqlist;intcompare(intX,intY){if(X==Y)returnX;elsereturnFALSE;}//compare的关系判断voidvisit(int&y){y=2*y;cout<6、lseL.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}//构造一个空的线性表Lintdestroylist(sqlist&L){free(L.elem);returnOK;}//销毁线性表Lintclearlist(sqlist&L){L.length=0;returnOK;}//将L重置为空表intlistempty(sqlistL){if(0==L.length)returnTRUE;elsereturnFALSE;}//求当前表L是否为空intlistlength(s7、qlistL){returnL.length;}//求当前线性表L的长度intgetelem(sqlistL,inti,int&e){if(i<18、9、i>L.length)exit(ERROR);e=*(L.elem+i-1);returnOK;}//用e返回L中第i个数据元素的值intlocateelem(sqlistL,inte,int(*compare)(intx1,intx2)){inti=1,j=0,*p;p=L.elem;while(i<=L.length&&!j){j=compare(*p++,e);++10、i;50}if(i<=L.length)returni-1;elsereturnFALSE;}//求L中第一个与e满足关系compare()的数据元素的位序,若不存在则返回0intpriorelem(sqlistL,intcur_e,int&pre_e){inti=2,*p;p=L.elem+1;while(i<=L.length
6、lseL.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}//构造一个空的线性表Lintdestroylist(sqlist&L){free(L.elem);returnOK;}//销毁线性表Lintclearlist(sqlist&L){L.length=0;returnOK;}//将L重置为空表intlistempty(sqlistL){if(0==L.length)returnTRUE;elsereturnFALSE;}//求当前表L是否为空intlistlength(s
7、qlistL){returnL.length;}//求当前线性表L的长度intgetelem(sqlistL,inti,int&e){if(i<1
8、
9、i>L.length)exit(ERROR);e=*(L.elem+i-1);returnOK;}//用e返回L中第i个数据元素的值intlocateelem(sqlistL,inte,int(*compare)(intx1,intx2)){inti=1,j=0,*p;p=L.elem;while(i<=L.length&&!j){j=compare(*p++,e);++
10、i;50}if(i<=L.length)returni-1;elsereturnFALSE;}//求L中第一个与e满足关系compare()的数据元素的位序,若不存在则返回0intpriorelem(sqlistL,intcur_e,int&pre_e){inti=2,*p;p=L.elem+1;while(i<=L.length
此文档下载收益归作者所有