数据结构实验报告线性表.docx
- 文档编号:1768592
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:8
- 大小:16.33KB
数据结构实验报告线性表.docx
《数据结构实验报告线性表.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告线性表.docx(8页珍藏版)》请在冰点文库上搜索。
数据结构实验报告线性表
课程名称—数据结构实验名称—线性表的操作实验日期
班级—计科—姓名学号—仪器编号
实验报告要求1.实验目的2.实验要求3.实验步骤4.程序清单5.运行情况6.流程图7.实验体会
实验目的:
实验目的:
⑴熟悉线性表的定义和基本操作;
⑵掌握线性表的顺序存储结构设计与基本操作的实现。
实验任务与要求:
⑴定义线性表的顺序存储表示;
⑵基于所设计的存储结构实现线性表的基本操作;
⑶编写一个主程序对所实现的线性表进行测试;
⑷线性表的应用:
编程实现顺序表的合并
实验内容:
1、运行以下程序,理解静态分配顺序存储结构的线性表的下列基本操作。
(1)初始化顺序表
(2)创建顺序表(3)判断空表(4)求顺序表长度
(5)输出顺序表(6)取顺序表位置i的元素值(7)在顺序表中查找值为e的元素位置
(8)向顺序表中插入一个元素(9)从顺序表中删除一个元素
2、采用书上第22页定义的线性表动态分配顺序存储结构,编程实现书中算法2.3、算法2.4和算法2.5。
提示:
要实现算法2.4和2.5,必须先创建n个数据元素的顺序表,另外输出顺序表的操作也是必要的。
3、采用线性表动态分配顺序存储结构,实现顺序表的合并操作:
①设有线性表LA和LB,试设计
-可编辑修改-
算法将LA和LB归并为新的线性表LC;②设线性表L1和L2中的数据元素为整数,且均已按值非
递减有序排列,要求L3中的数据元素也按值非递减有序排列。
程序清单:
1、略
2、
#include
#include
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
#defineERROR0
#defineOK1
typedefintElemType;
typedefstruct{
int*elem;
intlength;
intlistsize;
}SqList;
intInitList_Sq(SqList&L){
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!
L.elem)returnERROR;
L.length=O;
L.listsize=LIST_INIT_SIZE;
returnOK;
}
voidCreateList_Sq(SqList&L,intn)
{
inti;
printf("输入%d个元素:
\n",n);for(i=0;i scanf("%d",&L.elem[i]); L.length=n; } voidDispList_Sq(SqListL) { inti; if(L.length==0)return; for(i=0;i printf("%d",L.elem[i]); printf("\n"); } intListInsert_Sq(SqList&L,inti,ElemTypee){ ElemType*newbase; int*p,*q; if(i<1||i>L.length+1)returnERROR; if(L.length>=L」istsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(! newbase)returnERROR; L.elem=newbase; L.listsize+=LISTINCREMENT; } q=&(L.elem[i-1]); for(p=&(L.elem[L」ength-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L.length; returnOK; } intListDelete_Sq(SqList&L,inti,ElemType&e) { int*p,*q; if(i<1||i>L.length)returnERROR; p=&(L.elem[i-1]); e=*p; q=L.elem+L.length-1; for(++p;p<=q;++p) *(p-1)=*p; --L」ength; returnOK; } voidmain() { ElemTypee,a,n,x,y; SqListL; InitList_Sq(L); printf("输入元素个数n: \n"); scanf("%d",&n); CreateList_Sq(L,n); printf("输出顺序表所有元素: \n"); DispList_Sq(L); printf("插入元素的位置: "); scanf("%d",&x); printf("插入的元素为: "); scanf("%d",&a); printf("在顺序表第%d个位置插入%d\n",x,a); ListInsert_Sq(L,x,a); printf("输出插入操作后顺序表所有元素! \n"); DispList_Sq(L); printf(”删除元素的位置: ”); scanf("%d",&y); printf("删除顺序表第%d个位置的元素: \n",y); ListDelete_Sq(L,y,e); printf("输出删除操作后顺序表所有元素: \n"); DispList_Sq(L); } 3、 #include #include #defineLIST_INIT_SIZE100 #defineLISTINCREMENT10 #defineERROR0 #defineOK1 typedefintElemType; typedefstruct{ int*elem; intlength; intlistsize; }SqList; intInitList_Sq(SqList&L){ L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(! L.elem)returnERROR; L.length=O; L.listsize=LIST_INIT_SIZE; returnOK; } voidCreateList_Sq(SqList&L,intn) { inti; printf("输入%d个元素: \n",n); for(i=0;i scanf("%d",&L.elem[i]); L.length=n; } voidDispList_Sq(SqListL) { inti; if(L.length==0)return; for(i=0;i printf("%d",L.elem[i]); printf("\n"); } voidMergeList_Sq(SqListLa,SqListLb,SqList&Lc) { int*pa,*pb,*pc,*pa_last,*pb_last; pa=La.elem; pb=Lb.elem; Lc.listsize=Lc」ength=La」ength+Lb.length; pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType)); if(! Lc.elem)return; pa」ast=La.elem+La.length-1; pb_last=Lb.elem+Lb.length-1; while(pa<=pa_last&&pb<=pb_last){ if(*pa<=*pb) *pc++=*pa++; else *pc++=*pb++; } while(pa<=pa_last) *pc++=*pa++; while(pb<=pb_last) *pc++=*pb++; } voidmain() { inta,b; SqListLa,Lb,Lc; InitList_Sq(La); InitList_Sq(Lb); InitList_Sq(Lc); printf("输入La兀素个数a: \n");scanf("%d",&a); CreateList_Sq(La,a); printf("输入Lb兀素个数b: \n");scanf("%d",&b); CreateList_Sq(Lb,b); printf(”输出顺序表La所有兀素: \n"); DispList_Sq(La); printf("输出顺序表Lb所有兀素: \n"); DispList_Sq(Lb); MergeList_Sq(La,Lb,Lc); printf("输出顺序表Lc所有兀素: \n"); DispList_Sq(Lc); } 教师评价 优 良 中 及 格 不及 格 教师 签名 日期 江南大学物联网工程学院实验报告
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 线性