欢迎来到天天文库
浏览记录
ID:35504770
大小:67.29 KB
页数:10页
时间:2019-03-25
《数据结构(c语言版)程海英-上机1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、上机1顺序表的操作实验1•问题描述顺序表是指采用顺序存储结构的线性表,利用内存中的一片起始位置确定的连续存储区域來存放表中的所有元素。可以根据需要对表屮的任何数据元素进行访问,元素的插人、删除可以在表中的任何位置进行。2•数据结构设计由于C语言屮一维数组也是采用顺序存储表示,因此可用一维数组data[MAXSIZE]来描述顺序表,其中MAXSIZE是一个预先设定的常数(如100),至于顺序表的长度(即线性表中元素的数目)可用一个整型变量length来表示,元素类型假定为ElemType(ElemType可以是任何相应的数据类型如int,char
2、等),用结构类型来定义顺序表的类型。#defineMAXSIZE100//MAXSI2E为线性表可能的级大长度#defineERROR・1typedefstruct{ElemTypedata[MAXSIZE];intlength;//length为线性表的长度}SqList;3•函数说明〃线性表定义顺序表的基本操作:InitList(SqList&L)〃初始化操作,将线性表L理空CreatSqlist(SqList&L,intn)〃建立一个顺序存储的线性表Output(SqListL)〃输出顺序表LIsEmpty(SqListL)〃判断表是否为
3、空,若L为空表则返回。GetElem(SqListL,inti)〃取表L中第i元素LocateElem(SqListL,ElemTypex)//定位函数,返回L屮第i个与x相等的数据元素的位置,否则返回值为Insert(SqList&L,ElemTypex,inti)//在线性表L中第i个数据元素之前插人一个数据元素xDelete(SqList&L,inti)〃删除线性表L中第i个数据元素Clear(SqList&L)〃清空线性表LMergeList(SqListLa,SqListLb,SqList&Lc)〃合并有序表La和Lb到表Lc中,使得
4、Lc依然有序4.编码实现#defineMAXSIZE100//MAXSIZE为线性表可能的最大长度#include#includetypedefintElemType;typedefstruct{//length为线性表的长度〃线性表定义〃初始化操作,将线性表L置空EleniTypedata
5、MAXSIZE];intlength;}SqList;voidInitList(SqList&L){LJength=0;}voidCreatSqlist(SqList&L,intn)〃建立顺序表{inti:for(
6、i=0;i7、第i元素{if(i<08、9、i>=L.length)elsereturnL.data[i10、;//C语言中数组的下标从0开始}intLocateElem(SqListL,EleniTypex)〃定位函数,返冋L中第1个与x相等的数据元素的位置(从0算起),否则返冋值为0{intk=0;while(k11、k;if(i<012、13、i>L.length14、15、LJength==MAXSIZE)return0;else{for(k=L.length;k>=i:k~)L.data16、k17、=L.data18、k-1];L19、20、i>=L.length)return0;else{for(k=i;k21、qList&L){InitList(L);〃删除线性表L中第i个数据元素〃下标越界〃移动后面的元素〃置空线性表LvoidMergeList(SqLis
7、第i元素{if(i<0
8、
9、i>=L.length)elsereturnL.data[i
10、;//C语言中数组的下标从0开始}intLocateElem(SqListL,EleniTypex)〃定位函数,返冋L中第1个与x相等的数据元素的位置(从0算起),否则返冋值为0{intk=0;while(k11、k;if(i<012、13、i>L.length14、15、LJength==MAXSIZE)return0;else{for(k=L.length;k>=i:k~)L.data16、k17、=L.data18、k-1];L19、20、i>=L.length)return0;else{for(k=i;k21、qList&L){InitList(L);〃删除线性表L中第i个数据元素〃下标越界〃移动后面的元素〃置空线性表LvoidMergeList(SqLis
11、k;if(i<0
12、
13、i>L.length
14、
15、LJength==MAXSIZE)return0;else{for(k=L.length;k>=i:k~)L.data
16、k
17、=L.data
18、k-1];L19、20、i>=L.length)return0;else{for(k=i;k21、qList&L){InitList(L);〃删除线性表L中第i个数据元素〃下标越界〃移动后面的元素〃置空线性表LvoidMergeList(SqLis
19、
20、i>=L.length)return0;else{for(k=i;k21、qList&L){InitList(L);〃删除线性表L中第i个数据元素〃下标越界〃移动后面的元素〃置空线性表LvoidMergeList(SqLis
21、qList&L){InitList(L);〃删除线性表L中第i个数据元素〃下标越界〃移动后面的元素〃置空线性表LvoidMergeList(SqLis
此文档下载收益归作者所有