数据结构实验指导书cjWord文件下载.docx
《数据结构实验指导书cjWord文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验指导书cjWord文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
/*当前分配的存储容量*/
intlength;
/*length是顺序表的长度*/
}SeqList;
intSeqListInit(SeqList&
L);
/*初始化顺序表,成功返回1,否则返回0*/
voidListClear(SeqList&
/*清空顺序表*/
intListLength(SeqListL);
/*求顺序表长度,返回顺序表长度*/
intListEmpty(SeqListL);
/*检查顺序表是否为空,为空返回1,否则返回0*/
intListFull(SeqListL);
/*检查顺序表是否为满,为满返回1,否则返回0*/
intListIncrement((SeqList&
/*为顺序表增加空间,增加成功返回1,否则返回0*/
DataTypeListGet(SeqListL,inti);
/*从顺序表中查找第i个元素,返回元素的值,合理返回元素值,否则返回-1*/
intListLocate(SeqListL,DataTypex);
/*从顺序表中查找与给定元素值相等的元素的位置,存在返回位置,不存在返回0*/
intListInsert(SeqList&
L,inti,DataTypex);
/*向顺序表中插入元素,插入成功,返回1,否则返回0*/
intListDelete(SeqList&
L,inti);
/*从顺序表中删除元素,删除成功,返回1,否则返回0*/
3、编写主函数main完成对上述程序的测试
三、实验步骤
1、启动VisualC++的集成开发环境
从“开始”菜单中选择“程序”中MicrosoftVisualStudio6.0的MicrosoftVisualC++6.0,进入VisualC++6.0集成开发环境窗口。
2、创建一个项目
(1)单击File菜单中的New选项显示New(新建)对话框(如图1-1所示)。
图1-1New对话框
(2)单击Projects标签,在Projects(项目)选项卡中,选择Win32Console
Application(Win32控制台应用程序)。
在Location(位置)文本框中指定一个路径(如E:
\我的教学课件\TEST\shiyan1,在PrejectName(项目名称)文本框中为项目输入一个名字“shiyan1”如图1-1,单击OK(确定)按钮。
(3)在弹出的Win32ConsoleApplication-Step1of1对话框中选择AnEmpty
Project单选项,然后单击Finish(完成)按钮(如图1-2所示)。
图1-2Win32ConsoleApplication-Step1of1对话框
(4)在NewProjectInformation对话框中单击OK按钮,完成项目的建立。
3、建立C源程序文件
(1)单击Project|AddtoProject|New,弹出New对话框,如图1-3所示。
(2)在new对话框的Files选项卡中选择TextFile,并填入文件名称
“shiyan1.c”,单击OK按钮,完成新建C源程序文件。
图1-3添加新的C++源程序文件
4、编辑C源程序文件内容
(1)在文件编辑窗口中输入代码(如图1-4所示)。
图1-4在文件编辑窗口中输入源程序代码
(2)源程序编辑完后选择菜单命令File|Save保存这个文件。
5、建立并运行可执行程序
(1)选择菜单命令Build->
Buildshiyan1.exe,如果你正确输入了源程序,此时便成功地生成了可执行程序shiyan1.exe。
如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息。
根据这些错误信息对源程序进行修改,再重新选择菜单命令Build|Buildshiyan1.exe,重复这个过程直到能成功地建立可执行程序shiyan1.exe为止(如图1-4)。
(2)选择菜单命令Build|Executeshiyan1.exe运行程序,查看运行结果。
6、关闭/打开工作空间
(1)选择菜单命令File|CloseWorkspace,关闭工作空间。
(2)单击菜单命令File|OpenWorkspace,在弹出的对话框中选定E:
\我的教学课件\TEST\shiyan1\shiyan1.dsw,单击“打开”按钮,则可打开工作空间,对已建立的项目文件进行修改。
7.根据实验步骤1~6,建立应用程序平台shiyan1,完成第二部分中
(2)-(3)的相应程序。
四、扩展部分
1、在程序中增加求指定元素的前驱和后继功能。
DataTypeListPrior(SeqListL,DataTypee);
/*求顺序表中元素的前驱,存在返回前驱,不存在返回-1*/
DataTypeListNext(SeqListL,DataTypee);
/*求顺序表中元素的后继,存在返回后继,不存在返回-1*/
2、修改main程序,完成对增加的功能的测试。
实验2链表基本操作
一、实验目的
1.定义单链表的结点类型。
2.熟悉对单链表的一些基本操作和具体的函数定义。
3.通过单链表的定义掌握线性表的链式存储结构的特点。
4.掌握循环链表和双链表的定义和构造方法。
二、实验内容
该程序的功能是实现单链表的定义和操作。
该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。
程序中的单链表(带头结点)结点为结构类型,结点值为整型。
typedefintDataType;
/*定义DataType为int类型*/
typedefstructLNode/*单链表的结点类型*/
DataTypedata;
structLNode*next;
}LNode,*LinkedList;
LinkedListLinkedListInit();
/*初始化单链表,返回头结点*/
voidLinkedListClear(LinkedListL);
/*清空单链表*/
intLinkedListEmpty(LinkedListL);
/*检查单链表是否为空,为空返回1,否则返回0*/
voidLinkedListTraverse(LinkedListL);
/*遍历单链表,输出单链表的值*/
intLinkedListLength(LinkedListL);
/*求单链表的长度并返回长度*/
LinkedListLinkedListGet(LinkedListL,inti);
/*从单链表表中查找第i个元素并返回地址,当地址为NULL时该元素不存在*/
LinkedListLinkedListLocate(LinkedListL,DataTypex);
/*从单链表表中查找与给定元素值相同的元素在链表中的位置并返回地址,返回值为NULL时该元素不存在*/
intLinkedListInsert(LinkedListL,inti,DataTypex);
/*向单链表中第i个位置插入元素,插入成功返回1,否则返回0*/
intLinkedListDel(LinkedListL,DataTypex);
/*从单链表中删除元素,删除成功返回1,否则返回0*/
LinkedListLinkedListCreat(LinkedListL);
/*用逆位序法建立单链表并返回头结点,输入数据为0,停止创建新节点*/
1、按照实验一中介绍的方法创建一个Shiyan2的工程,并加入shiyan2.c的文件到工程。
2、完成第二部分中的相应程序。
3、编写主程序main实现相应功能的测试。
1、将逆位序法创建链表改为正序创建链表。
LinkedListLinkedListCreat_Sort(LinkedListL);
/*用正序法建立单链表并返回头结点,输入数据为0,停止创建新节点*/
2、修改main程序,完成对相应功能的测试。
实验3队列的基本操作
1.定义循环队列的结点类型。
2.熟悉对循环队列的一些基本操作和具体的函数定义。
3.通过循环链表的定义掌握队列的存储结构的特点。
该程序的功能是实现循环队列的定义和操作。
该程序包括循环队列结构类型以及对循环队列操作的具体的函数定义和主函数。
程序中的循环队列结点为结构类型,结点值为整型。
typedefintQElemType;
/*定义QElemType为int类型*/
#defineMAXQSIZE10;
//队列最大长度
typedefstruct/*循环队列的结点类型*/
QElemType*base;
/*循环队列分配的存储空间*/
intfront;
/*循环队列的头结点指针*/
intrear;
/*循环队列的尾结点指针*/
}SqQueue;
intInitQueue(SqQueue&
Q);
/*初始化队列,成功返回1,否则返回0*/
intQueueLength(SqQueue&
/*返回队列的长度*/
intENQueue(SqQueue&
Q,QElemTypee);
/*将e插入队列,插入成功返回1,否则返回0*/
intDeQueue(SqQueue&
Q,QElemType&
e);
/*出队列元素放入e,成功返回1,否则返回0*/
intClearQueue(SqQueue&
/*清空队列,成功返回1,否则返回0*/
intDestroyQueue(SqQueue&
/*销毁队列,成功返回1,否则返回0*/
1、按照实验一中介绍的方法创建一个Shiyan3的工程,并加入shiyan3.c的文件到工程。
1、如果希望循环队列中的元素都能得到利用,则需设置一个标志域tag,并以tag的值为0或1来区分尾指针和头指针值相同时的队列状态是“空”还是“满”。
试编写与此结构相应的入队列和出队列的算法。
inttag;
/*tag=0,队列为“空”,tag=1,队列为“满”*/
实验4内部排序算法设计
1、熟练掌握各种内部排序方法,深刻理解排序算法及执行过程;
2、学会分析各种内部排序算法的性能;
3、了解各种排序方法的优缺点,对于实际问题能够选择一种好的排序方案。
对于以下无序序列采用以下的内部排序方法变成有序序列:
49,38,65,97,76,13,27,49
1、直接插入排序
voidInsertSort(SqlistL);
//直接插入排序
2、折半插入排序
voidBInsertSort(SqlistL);
//折半插入排序
3、冒泡排序
voidBUBleInsertSort(SqlistL);
//冒泡排序
4、简单选择排序
voidSelectSort(SqlistL);
//简单选择排序
数据的定义为:
#defineMAXSIZE8//排序序列的最大长度
typedefintElemType;
/*定义QElemType为int类型*/
typedefstruct{
ElemTyper[MAXSIZE+1];
//r[0]为哨兵
//顺序表长度
}Sqlist;
1、按照实验一中介绍的方法创建一个Shiyan4的工程,并加入shiyan4.c的文件到工程。
1、对第二中的序列进行快速排序
voidQuickSort(SqlistL)