关于顺序表的实验报告.docx
《关于顺序表的实验报告.docx》由会员分享,可在线阅读,更多相关《关于顺序表的实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
关于顺序表的实验报告
2011——2012学年第一学期
合肥学院数理系
实验报告
课程名称:
数据结构
实验项目:
顺序表的基本运算
实验类别:
综合性□设计性□验证性□
专业班级:
09数学
(2)
姓名:
张琼
学号:
0907022040
实验地点:
7#606
实验时间:
2011.10.28
指导教师:
李旭成绩:
一.实验目的:
熟悉关于顺序表的一些基本运算
二.实验内容:
顺序表置空
#include
#definemaxlen20
typedefstruct{
intdata[maxlen];
intlast;
}Sequenlist;
voidSqLsetnull(Sequenlist*L){
L->last=-1;}
voidmain()
{
Sequenlistl;
SqLsetnull(&l);
}
顺序表求表长
#include
#definemaxlen20
typedefstruct{
intdata[maxlen];
intlast;
}Sequenlist;
intsqllength(Sequenlist*l)
{return(l->last+1);}
voidmain()
{
Sequenlistl;
inti;
for(i=0;i<10;i++)
scanf("%d",&l.data[i]);
l.last=i-1;
printf("%d",sqllength(&l));
}
按序号取元素程序
#include
#definemaxlen20
typedefstruct{
intdata[maxlen];
intlast;
}sequenlist;
intsqlget(sequenlist*l,inti)
{
intx;
if(i<1||i>l->last+1)
printf("超出范围");
else
x=l->data[i-1];
returnx;
}
voidmain()
{
sequenlistl;
inti,j;
for(i=0;i<10;i++)
scanf("%d",&l.data[i]);
l.last=i-1;
printf("请输入序号\n");
scanf("%d",&j);
printf("%d",sqlget(&l,j));
}
按值查找程序
#include
#definemaxlen20
typedefstruct{
intdata[maxlen];
intlast;
}Sequenlist;
voidsqllocate(Sequenlist*l,intx)
{
inti,z=0;
for(i=0;ilast+1;i++)
if(l->data[i]==x){
printf("%d",i+1);
z=1;}
if(z==0)
printf("%d",-1);
}
voidmain()
{
Sequenlistl;
inti,n;
for(i=0;i<5;i++)
scanf("%d",&l.data[i]);
l.last=i-1;
printf("请输入要查找的数\n");
scanf("%d",&n);
sqllocate(&l,n);
}
判表满程序
#include
#definemaxlen10
typedefstruct{
intdata[maxlen];
intlast;
}Sequenlist;
intsqlempty(Sequenlist*l)
{
if(l->last+1>=maxlen)
return
(1);
else
return(0);
}
voidmain()
{
Sequenlistl;
inti,n;
for(i=0;i<5;i++)
scanf("%d",&l.data[i]);
l.last=i-1;
printf("%d",sqlempty(&l));
}
顺序表插入程序
#include
#definemaxlen20
typedefstruct{
intdata[maxlen];
intlast;
}Sequenlist;
intsqlempty(Sequenlist*l)
{
if(l->last+1>=maxlen)
return
(1);
else
return(0);
}
intsqlinsert(Sequenlist*l,inti,intx)
{
intj;
if(sqlempty(l)==1)
{printf("overflow");
return(0);
}
elseif((i<1)||(i>l->last+2))
{
printf("error");
return(0);
}
else{
for(j=l->last;j>=i-1;j--)
l->data[j+1]=l->data[j];
l->data[i-1]=x;
l->last=l->last+1;
return
(1);
}
}voidmain()
{
Sequenlistl;
inti,n,m;
for(i=0;i<5;i++)
scanf("%d",&l.data[i]);
l.last=i-1;
printf("请输入插入的位置和元素\n");
scanf("%d%d",&m,&n);
sqlinsert(&l,m,n);
for(i=0;i<6;i++)
printf("%d",l.data[i]);
}
删除元素程序
#include
#definemaxlen20
typedefstruct{
intdata[maxlen];
intlast;
}sequenlist;
intsqldelete(sequenlist*l,inti)
{
intj;
if(l->last<0)
{
printf("顺序表为空");
return0;
}
elseif((i<1)||(i>l->last+1))
{
printf("参数出错");
return0;
}
else
{
for(j=i;j<=l->last+1;j++)
l->data[j-1]=l->data[j];
l->last--;
return1;
}
}
voidmain()
{
sequenlistl;
inti,n;
for(i=0;i<5;i++)
scanf("%d",&l.data[i]);
l.last=i-1;
printf("请输入删除的位置\n");
scanf("%d",&n);
printf("%d",sqldelete(&l,n));
}
三.实验方案(程序设计说明)
五.程序运行结果
求表长
按序号取元素
按值查找
判表满
顺序表插入
删除元素
六.实验总结
通过本次实验,我掌握了有关顺序表的一些基本运算,顺序表的置空、求表长、按序号取元素、按值查找、判表满、插入数据、删除元素。
进一步熟悉了顺序表的基本算法
学生签名:
张琼
年月日
七.教师评语及成绩
教师签名:
年月日