顺序表的基本操作插入删除合并.docx

上传人:b****6 文档编号:16744357 上传时间:2023-07-17 格式:DOCX 页数:9 大小:52.64KB
下载 相关 举报
顺序表的基本操作插入删除合并.docx_第1页
第1页 / 共9页
顺序表的基本操作插入删除合并.docx_第2页
第2页 / 共9页
顺序表的基本操作插入删除合并.docx_第3页
第3页 / 共9页
顺序表的基本操作插入删除合并.docx_第4页
第4页 / 共9页
顺序表的基本操作插入删除合并.docx_第5页
第5页 / 共9页
顺序表的基本操作插入删除合并.docx_第6页
第6页 / 共9页
顺序表的基本操作插入删除合并.docx_第7页
第7页 / 共9页
顺序表的基本操作插入删除合并.docx_第8页
第8页 / 共9页
顺序表的基本操作插入删除合并.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

顺序表的基本操作插入删除合并.docx

《顺序表的基本操作插入删除合并.docx》由会员分享,可在线阅读,更多相关《顺序表的基本操作插入删除合并.docx(9页珍藏版)》请在冰点文库上搜索。

顺序表的基本操作插入删除合并.docx

顺序表的基本操作插入删除合并

成绩

辽宁工程技术大学上机实验报告

 

实验名称

顺序表的基本操作的实现

院系

软件学院

专业

软件工程

班级

软件15-3

姓名

ZOE

学号

日期

2016.09.27

实验

目的

简述本次实验目的:

1.掌握线性表顺序存储结构的特点。

2.掌握线性表顺序存储结构的基本操作(创建、插入、删除)的实现。

3.通过顺序表有序表的合并的实现,掌握顺序表操作特点。

实验

准备

你为本次实验做了哪些准备:

在课后认真复习,基于上课的基础上,对于线性表的存储,插入,删除,合并等有了一定的了解,对于书上给出的程序反复捉摸,达到了较熟练的程度。

实验

进度

本次共有1个练习,完成个。

实验

总结

本次实验的收获、体会、经验、问题和教训:

顺序表初始化、插入、删除算法。

实现两个有序表合并算法.

#include"malloc.h"

#include"stdlib.h"

#defineOK1

#defineOVERFLOW-1

#defineERROR0

#defineLIST_INIT_SIZE100

#defineLISTINCREMENT10

typedefintElemType;

typedefintStatus;

/*----------顺序表的存储结构定义--------*/

typedefstruct{

ElemType*elem;

intlength;

intlistsize;

}sqlist;

/*-------------初始化顺序表L----------*/

StatusInitList_sq(sqlist*L)

{

L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!

L->elem)exit(OVERFLOW);

L->length=0;

L->listsize=LIST_INIT_SIZE;

returnOK;

}

/*------------顺序表L插入----------*/

StatusListInsert_Sq(sqlist*L,inti,ElemTypee)

{

ElemType*newbase,*p,*q;

if(i<1||i>L->length+1)returnERROR;

if(L->length>=L->listsize)

{

newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));

if(!

newbase)exit(OVERFLOW);

L->elem=newbase;

L->listsize=L->listsize+LISTINCREMENT;

}

q=&(L->elem[i-1]);

for(p=&(L->elem[L->length-1]);p>=q;--p)*(p+1)=*p;

*q=e;

++L->length;

returnOK;

}

/*------------顺序表L删除----------*/

StatusListDelete_Sq(sqlist*L,inti,ElemType*e)

{

ElemType*p,*q;

if(i<1||i>L->length)returnERROR;

p=&(L->elem[i-1]);

*e=*p;

q=L->elem+L->length-1;

/*printf("%d,%d,%d,%d",p,L->elem,L->length,q);*/

for(++p;p<=q;++p)*(p-1)=*p;

--L->length;

returnOK;

}

/*-----------合并----------*/

voidMergelist(sqlistLa,sqlistLb,sqlistLc)

{

inti,j,k;

i=j=k=0;

while((i

{

if(La.elem[i]

{

Lc.elem[k++]=La.elem[i++];

}

else

Lc.elem[k++]=Lb.elem[j++];

}

while(i

Lc.elem[k++]=La.elem[i++];

while(j

Lc.elem[k++]=Lb.elem[j++];

}

/*-----------main函数----------*/

main()

{

sqlistLa,Lb,Lc;

inti;

intn=5;

ElemTypee;

/*------------------INIT-----------------*/

if(InitList_sq(&La))

{

printf("Initisok!

\n");

printf("Length:

%d\n",La.length);

printf("Listsize:

%d\n\n",La.listsize);

}

else

printf("error!

");

/*------------------INIT-----------------*/

if(InitList_sq(&Lb))

{

printf("Initisok!

\n");

printf("Length:

%d\n",Lb.length);

printf("Listsize:

%d\n\n",Lb.listsize);

}

else

printf("error!

");

/*------------------INIT-----------------*/

if(InitList_sq(&Lc))

{

printf("Initisok!

\n");

printf("Length:

%d\n",Lc.length);

printf("Listsize:

%d\n\n",Lc.listsize);

}

else

printf("error!

");

/*--------------顺序表La输入初始值---------------*/

printf("PleaseinputthevaluesofLa:

\n");

for(i=1;i<=n;i++)

{

scanf("%d",&e);

if(ListInsert_Sq(&La,i,e)!

=OK)break;

}

for(i=1;i<=La.length;i++)

printf("e[%d]=%d\n",i-1,La.elem[i-1]);

printf("Length:

%d\n\n",La.length);

/*-------------INSERT-----------------*/

printf("Pleaseinputtheplaceofinsert:

\n");

scanf("%d",&i);

printf("Pleaseinputtheelemvalue:

\n");

scanf("%d",&e);

if(ListInsert_Sq(&La,i,e)==OK)

{

for(i=1;i<=La.length;i++)

printf("e[%d]=%d\n",i-1,La.elem[i-1]);

printf("Length:

%d\n\n",La.length);

}

/*-------------DELETE----------------*/

printf("Pleaseinputtheplaceofdelete:

\n");

scanf("%d",&i);

if(ListDelete_Sq(&La,i,&e)==OK)

printf("Thedeletedelemis:

%d\n",e);

for(i=1;i<=La.length;i++)

printf("e[%d]=%d\n",i-1,La.elem[i-1]);

printf("Length:

%d\n",La.length);

/*--------------顺序表Lb输入初始值---------------*/

printf("PleaseinputthevaluesofLb:

\n");

for(i=1;i<=n;i++)

{

scanf("%d",&e);

if(ListInsert_Sq(&Lb,i,e)!

=OK)break;

}

for(i=1;i<=Lb.length;i++)

printf("e[%d]=%d\n",i-1,Lb.elem[i-1]);

printf("Length:

%d\n\n",Lb.length);

/*--------------合并---------------*/

Lc.length=La.length+Lb.length;

Mergelist(La,Lb,Lc);

for(i=1;i<=Lc.length;i++)

printf("\n合并后的数组为\n");

printf("e[%d]=%d\n",i-1,Lc.elem[i-1]);

printf("Length:

%d\n\n",Lc.length);

}

 

 

(3)主函数中调用以上算法,完成如下功能:

建立一个空表La,输入一组元素序列。

输入插入位置及元素值,完成插入操作,并输出插入后顺序表。

输入删除元素位序,完成删除操作,输出删除元素值及删除后顺序表。

建立另一个顺序表Lb,并输入元素。

调用合并算法,将La,Lb合并成Lc,输出合并后Lc

 

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

当前位置:首页 > 法律文书 > 调解书

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

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