《数据结构》上机实验指导书Word下载.docx
《《数据结构》上机实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《《数据结构》上机实验指导书Word下载.docx(52页珍藏版)》请在冰豆网上搜索。
并针对书上的教学内容,紧密联系实际。
本学期实验计划分为14个实验,期望通过每次上机的训练,能圆满完成每次实验任务,达到实验目的。
三、上机实验语言要求:
上机实验要求用VisualC++6.0。
四、上机实验参考书目要求:
《数据结构》
编著:
陈雁主编
出版:
高等教育出版杜
以该书作为主要参考书目,如有条件,其它书籍辅助更佳。
五、实验步骤须知:
1.问题分析和任务定义:
进行设计前,要求学生明白所需完成的任务是什么,对实验要求有明确了解。
2.上机准备和上机调试
上机前,应熟悉若干最常用的上机与调试命令操作,以便顺利上机,并加快上机速度。
上机的过程,是一个不断发现问题并修正的过程。
调试正确后,认真整理源程序及其注释,优化格式和界面。
3.总结和整理实验报告
实验报告的开头应给出班级、姓名、学号,每次实验报告应包括以下内容:
实验名称、实验目的、实验要求、实验步骤、实验结果或源程序。
为了达到每次的实验目的,使上机实验的效果好,要求每次上机后必须写好实验报告,否则本次上机无成绩。
实验1 DOS界面下的控制台应用程序
一、实验要求:
1、通过Appwizard创建一个在DOS界面下运行的控制台应用程序。
2、了解和使用VisualC++6.0的集成开发环境
3、熟悉VisualC++6.0集成开发环境的基本编辑命令及功能键,学会常规窗口操作,熟悉常用功能菜单命令
4、学习完整的C++程序开发过程(编辑、编译、连接、调试、运行及查看结果)。
5、体会所学C语句的用法
二、课时:
2学时:
三、实验内容:
试运行一个简单的C语言程序。
/*案例代码文件名:
EX_1.C*/
/*功能:
一个简单的C语言程序示例*/
#include"
stdio.h"
main()
{
floata,b,area;
a=1.2;
b=3.6;
area=a*b;
printf("
a=%f,b=%f,area=%f\n"
a,b,area);
}
操作步骤:
1.程序的文件虽然只有一个,我们仍使用一个项目来管理它,程序是DOS(Console)程序(控制台程序),不是windows程序。
选VC主菜单File|New进入New对话框。
选其工程页Project中的Win32ConsoleApplication项(表示创建一个控制台应用程序),在Location下指定项目存放的文件夹后在ProjectName下输入项目名exam1(可自定),系统会自动在你指定的文件夹下创建一个项目的文件夹exam1,以后你新建的各个文件都存在此文件夹下。
见下图
按OK按钮,进入下页(如下图)后,按Finish按钮,在出现的对话框中再按OK就创建了一个不包含文件的空项目。
2.从VC主菜单选File(文件)|New(新建)进入New对话框,这时应选File(文件)页,如下图:
选C++SourceFile(添加源文件)在File下名输入文件名exam1(不必输入扩展名),系统会自动加入扩展名.cpp。
注意:
AddtoProject(添加工程)前面的复选框必须选中,否则加入的文件不在项目中。
在VC平台右面的此文件代码编辑区中输入exam1.cpp的内容:
3、编辑运行。
执行“Build”-》“*.exeCtrl+F5”命令或单击!
图标
即可查看程序的运行结果。
实验2顺序表的基本操作的设计与实现
1.目的
掌握顺序表的各种基本操作,包括顺序表的建立、查找、求长度、查找前驱、插入、删除、输出等函数。
2.要求
完成顺序表的各种基本操作,包括顺序表的建立、查找、求长度、查找前驱、插入、删除、输出等函数功能,有助于更好的理解顺序表的概念和用法。
3.解题算法
顺序表的建立,首先要建立一块连续存储的空间。
在C++中可以使用数组来描述线性表的顺序存储结构。
从这个实验开始,程序使用了malloc函数,此函数向系统请求分配内存空间,其参数为申请的内存空间的大小,通常由求字节长度的sizeof函数计算得到空间大小。
申请空间成功时返回指向该空间起始地址的指针(由于malloc默认返回void类型指针,所以要强制类型转换),否则返回NULL指针。
使用此函数,必须包含对应的头文件stdlib.h。
4.实验程序
#include<
stdio.h>
stdlib.h>
#defineOK1
#defineERROR0
#defineOVERFLOW-1
#defineList_INIT_SPACE100//存储空间初始分配量
#defineList_INC_SPACE10//存储空间分配增量
typedefintElemType;
//指定顺序表中数据类型
typedefstruct
{
ElemType*elem;
//存储空间基址
intlength;
intlistsize;
//当前分配的存储容量(以sizeof(ElemType)为单位)
}Sq_List;
/****-------------------------------------*****/
//函数名:
Sq_ListInit(Sq_List&
L)
//参数:
(传入)SqListL,顺序表结构体L,存储线性表相关信息(&
相当
//于传入L的地址)
//返回值:
int型,返回1表示创建成功,0表示失败
//功能:
初始化一个空顺序表
intSq_ListInit(Sq_List&
//在内存中分配空间
L.elem=(ElemType*)malloc(List_INIT_SPACE*sizeof(ElemType));
if(!
L.elem)exit(OVERFLOW);
//存储分配失败
//构造一个空的线性表L//
L.length=0;
L.listsize=List_INC_SPACE;
//初始存储容量
returnOK;
}//函数Sq_ListInit结束
LocateElem(Sq_ListL,inte)
(传入)SqListL,顺序表
//(传入)ElemTypee,定位元素
int型,返回定位位置,0表示失败
在顺序表中定位元素
intLocateElem(Sq_ListL,inte)
inti=1;
//定义线性表指针
int*p=L.elem;
//查找元素e
while(i<
=L.length&
&
*p++!
=e)
++i;
if(i<
=L.length)
returni;
else
returnERROR;
/*求顺序表的长度*/
intGetListLength(Sq_ListL)
{
returnL.length;
}
Sq_ListInsert(Sq_List&
L,inti,ElemTypee)
(传入)SqList&
L顺序表
//(传入)inti插入位置
//(传入)ElemTypee插入元素
1表示成功,0表示操作失败
在顺序表L中的第i个位置前插入新元素
//备注:
i的合法取值为1≤i≤线性表长度+1
intSq_ListInsert(Sq_List&
//判断位置是否合法
1||i>
L.length+1)
printf("
i的值不合法!
\n"
);
return0;
//超出空间进行再分配
if(L.length>
=L.listsize)
int*newspace;
newspace=(ElemType*)realloc(L.elem,(L.listsize+List_INC_SPACE)*sizeof(ElemType));
if(!
newspace)exit(OVERFLOW);
L.elem=newspace;
//新基址
L.listsize+=List_INC_SPACE;
//增加存储容量
int*p,*q;
//定义指向线性表位置i和尾的指针
q=&
(L.elem[i-1]);
//q指针指向插入位置i的前一个
for(p=&
(L.elem[L.length-1]);
p>
=q;
--p)
*(p+1)=*p;
//插入元素之后的元素右移
*q=e;
//把元素e放在位置i处
++L.length;
//线性表长度增1
}//函数Sq_ListInsert结束
Sq_ListDelete(Sq_List&
L,inti,ElemType&
e)