- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南 阳 理 工 学 院
《数据结构》实验指导书
(2014版)
软件学院·软件工程教研室
2014.8
目录
实验1 线性表及其应用 1
实验2 栈和队列的实现 4
实验3 树和二叉树 7
实验4图 9
实验5 查找 11
实验6 排序 13
实验1 线性表及其应用
实验性质:验证性
实验学时:2学时
实验目的
掌握线性表的顺序存储结构在计算机的表示方法及其基本操作的实现;
掌握线性表的链式存储结构在计算机的表示方法及其基本操作的实现;
能够利用线性表结构对实际问题进行分析建模,利用计算机求解。
实验预备知识
复习C/C++语言相关知识(如:结构体的定义、typedef的使用、函数的定义、调用及参数传递方式);
阅读并掌握顺序表与链表的类型定义及其查找、插入、删除等基本操作。
实验内容
理解并分别用顺序表、链表的操作运行下列程序:
#include iostream
using namespace std;
#include Status.h
typedef int ElemType;
#include SqList.h //用#include LinkList.h替换
void main()
{
SqList L; //用LinkList L;替换,与#include LinkList.h配合
int n,i;
ElemType e;
InitList(L);
cout\nL=;
ListTraverse(L);
cout\n请设置将向线性表L中输入的元素个数:;
cinn;
CreateList(L,n);
cout\nL=;
ListTraverse(L);
cout\nL的表长为:ListLength(L)endl;
cout\n请输入想要获取的元素位序:;
cini;
if(GetElem(L,i,e)) cout\n第i个元素为:eendl;
else cout\n第i个元素不存在!endl;
cout\n请输入要查找的元素:;
cine;
if(i=LocateElem(L,e)) cout\n元素e的位置为:iendl;
else cout\n元素e不存在!endl;
cout\n请输入插入位置和所插入元素:;
cinie;
if(ListInsert(L,i,e))
{
cout\nL=;
ListTraverse(L);
}
else cout\n插入操作失败!endl;
cout\n请输入被删元素的位置:;
cini;
if(ListDelete(L,i,e)) cout\n被删元素为:eendl;
else cout\n删除操作失败!endl;
cout\nL=;
ListTraverse(L);
}
本题目说明:
(1)头文件Status.h的内容如下:
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
(2)头文件SqList.h(内容包括顺序表的结构定义及基本操作实现)。
(3)头文件LinkList.h(内容包括链表的结构定义及基本操作实现)。
(4)顺序表中基本操作的补充:
CreateList(L,n):向顺序表L中输入n个元素(0≤n≤MAXSIZE)。
Status CreateList(SqList L,int n)
{
int i;
if(!L.elem||n0||nMAXSIZE) return ERROR;
cout\n请输入n个元素:;
for(i=1;i=n;i++)
cinL.elem[i-1]; //可以用随机函数rand()自动生成
L.length=n;
return OK;
}
ListTraverse(L):以线性表的记录形式遍历输出顺序表L,例如:(a1,a2,…,ai,…an)。
void ListTraverse(SqList L)
{
int i;
cout(;
for(i=1;i=L.length;i++)
coutL.elem[i-1],;
if(L.length) cout\b)endl;
else cout)endl;
}
设计实现一个算法,用以对两个非递减有序表A、B进行合并,其中A=(2,5,8,9) ,B=(3,4,8,10,12,20)。
(任选题)已知有两个多项式P(x)和Q(x),基于链表设计算法实现P(x)+Q(x)运算,而且不重新开辟存储空间。
实验2 栈和队列的实现
实
原创力文档


文档评论(0)