数据结构实验报告线性表.docx

上传人:b****1 文档编号:1768592 上传时间:2023-05-01 格式:DOCX 页数:8 大小:16.33KB
下载 相关 举报
数据结构实验报告线性表.docx_第1页
第1页 / 共8页
数据结构实验报告线性表.docx_第2页
第2页 / 共8页
数据结构实验报告线性表.docx_第3页
第3页 / 共8页
数据结构实验报告线性表.docx_第4页
第4页 / 共8页
数据结构实验报告线性表.docx_第5页
第5页 / 共8页
数据结构实验报告线性表.docx_第6页
第6页 / 共8页
数据结构实验报告线性表.docx_第7页
第7页 / 共8页
数据结构实验报告线性表.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构实验报告线性表.docx

《数据结构实验报告线性表.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告线性表.docx(8页珍藏版)》请在冰点文库上搜索。

数据结构实验报告线性表.docx

数据结构实验报告线性表

课程名称—数据结构实验名称—线性表的操作实验日期

班级—计科—姓名学号—仪器编号

实验报告要求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);

}

教师评价

不及

教师

签名

日期

江南大学物联网工程学院实验报告

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2