最新数据结构实验顺序表的基本操作Word文件下载.docx
《最新数据结构实验顺序表的基本操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《最新数据结构实验顺序表的基本操作Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
加深对有关算法的理解。
三、算法设计与编码
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];