最新数据结构实验顺序表的基本操作Word文件下载.docx

上传人:b****6 文档编号:20352610 上传时间:2023-01-22 格式:DOCX 页数:11 大小:81.45KB
下载 相关 举报
最新数据结构实验顺序表的基本操作Word文件下载.docx_第1页
第1页 / 共11页
最新数据结构实验顺序表的基本操作Word文件下载.docx_第2页
第2页 / 共11页
最新数据结构实验顺序表的基本操作Word文件下载.docx_第3页
第3页 / 共11页
最新数据结构实验顺序表的基本操作Word文件下载.docx_第4页
第4页 / 共11页
最新数据结构实验顺序表的基本操作Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

最新数据结构实验顺序表的基本操作Word文件下载.docx

《最新数据结构实验顺序表的基本操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《最新数据结构实验顺序表的基本操作Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

最新数据结构实验顺序表的基本操作Word文件下载.docx

加深对有关算法的理解。

三、算法设计与编码

1.本实验用到的理论知识

本次实验用到结构体的定义,函数定义,

具体函数的定义有:

1)insert(L,i,x)在顺序表的第i个元素之前插入一个新元素x.

2)delete(L,i)删除顺序表的第i个元素。

3)listprint(L)输出顺序表。

2.算法概要设计

给出实验的数据结构描述,程序模块、功能及调用关系

第一步:

定义顺序表的存储结构。

第二步:

编写顺序表操作的具体函数定义。

第三步:

使用定义的顺序表并调用顺序表的一些操作,实现具体运算。

四、运行与测试

(1)运行成功的代码:

#include"

stdio.h"

//包含输出输入文件

#defineMAXSIZE100//宏定义

#defineOK1

#defineOVERFLOW-2

typedefintelemtype;

typedefstruct//定义顺序表的结构

{

elemtypevec[MAXSIZE];

//顺序表数据成员所占的内存空间

intlast;

//顺序表中最后一个元素在数组中的下标,从0开始

}sequenlist;

//插入操作

intinsert(L,i,x)//在顺序表的第i个元素前插入一个新的元素

sequenlist*L;

inti;

elemtypex;

intj;

if((*L).last>

=MAXSIZE-1)

{

printf("

thelistisoverflow!

\n"

);

return0;

//溢出判断

}

else

if(i<

1||i>

(*L).last+1)

{

printf("

positionisnotcorrect!

return0;

//插入位置不正确

}

else

for(j=(*L).last;

j>

=i-1;

j--)//后移元素

(*L).vec[j+1]=(*L).vec[j];

(*L).vec[i-1]=x;

(*L).last=(*L).last+1;

return1;

}

//删除操作

voiddelete(L,i)//删除顺序表的第i个元素

if(i<

1||i>

(*L).last+2)

deltefail\n"

for(j=i;

j<

=(*L).last;

j++)

(*L).vec[j-1]=(*L).vec[j];

//前移元素覆盖掉前面元素即可删除要删除的函数

(*L).last--;

//修改last的值

//定义一个定位函数

locate(L,k)

for(j=0;

if((*L).vec[j]==k)

printf("

该元素位序为:

%d\n"

j);

returnj;

}

return-2;

//逆置函数定义

diverse(L)

inti,t;

sequenlist*a;

for(i=0;

i<

=(*L).last/2;

i++)

t=(*L).vec[i];

(*L).vec[i]=(*L).vec[(*L).last-i];

(*L).vec[(*L).last-i]=t;

//删除重复函数定义

delsame(L)

inti,j,k;

for(j=i+1;

if((*L).vec[i]==(*L).vec[j])

for(k=j;

k<

(*L).last;

k++)

(*L).vec[k]=(*L).vec[k+1];

}

//输出线性表

voidlistprint(sequenlist*L)

inti;

i,e=%d,%d\n"

i,L->

vec[i]);

main()

sequenlistsl={{1,2,3,4,5,6,7,8,9,10},9};

//直接给顺序表赋初值

sequenlist*L;

/*定义一个指向顺序表类型的指针变量*/

inti,j,x,k;

elemtypee;

L=&

sl;

/*给指针变量赋值*/

printf("

pleaseinputtheinsertpositionandinsertvalue\n"

scanf("

%d,%d"

&

i,&

x);

theinsertposition:

%d\ninsertvalue:

i,x);

insert(L,i,x);

listprint(L);

pleaseintputthedeleteposition:

"

%d"

j);

delete(L,j);

请输入要查找的元素!

k);

locate(L,k);

逆置\n"

diverse(L);

删除重复\n"

delsame(L);

(2)在调试程序的过程中遇到什么问题,是如何解决的?

在错误提示行双击跳到错误行,并查看错误类型

(3)设计了那些测试数据?

测试结果是什么?

(4)程序运行的结果如何?

五、总结和心得

实验完成后的总结和思考。

此次试验很轻松,基本没什么错误,运行即所得!

1、预习思考题

定义一个定位函数locate(L,x),具有元素检索的功能。

当顺序表中存在一个值为x的数据元素时,返回第一次找到的数据元素的位序,否则,给出一个值,表示值为x的元素不存在。

在主程序中调用该函数,分析操作结果。

¸

Ã

Ô

ª

Ë

Ø

Î

»

Ð

ò

£

º

定义一个逆置函数diverse(L),把顺序表进行逆置。

定义一个函数delsame(L),把顺序表中重复的元素删除掉,只保留一个。

(*L).vec[k-1]=(*L).vec[k];

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

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1