顺序表.docx

上传人:b****8 文档编号:29958882 上传时间:2023-08-03 格式:DOCX 页数:13 大小:59.51KB
下载 相关 举报
顺序表.docx_第1页
第1页 / 共13页
顺序表.docx_第2页
第2页 / 共13页
顺序表.docx_第3页
第3页 / 共13页
顺序表.docx_第4页
第4页 / 共13页
顺序表.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

顺序表.docx

《顺序表.docx》由会员分享,可在线阅读,更多相关《顺序表.docx(13页珍藏版)》请在冰豆网上搜索。

顺序表.docx

顺序表

成绩评定

教师签名

嘉应学院计算机学院

《数据结构》实验报告

 

课程名称:

数据结构

开课学期:

2016-2017学年第1学期

班级:

1401

指导老师:

钟治初

实验题目:

顺序表

学号:

141110043

姓名:

苏永达

提交时间:

2016年10月27日

一、实验要求

1、假设顺序表L是递增有序的,表中有些数据是相同的,设计算法删除表中重复的元素,使得表中的元素值各不相同。

2、假设用有序表表示集合,设计算法,实现集合的并,交,差运算。

3、设计算法,将顺序表中元素值最大的两个数据放在最前面,元素值最小的两个数据放在最后面。

二、实验过程中遇到的问题

调试过程中主要遇到哪些问题?

是如何解决的?

  

删除多余元素——将i和j搞混,导致计数啥乱了;误将==写成=,结果根本就没有运行删除算法;在每次删除之后没有j--,结果当重复多个元素之后,只能删除一个元素,后来明白,每删除一个元素,j--,才能使j指向再次重复的元素。

 

合并函数——开始的时候自己使用for循环,不能正确的指定循环条件,即使指定了,不知道为何不能循环for语句。

即使依依比较了两个两个线性表的元素,若两个表的元素书,数目不等,当一个表结束后不知道如何处理剩余的一个表(循环条件找不对)。

后来使用使用while语句,就正确的编写了程序,使用while的过程中,由于i和j搞乱过也导致不能正确运行。

三、实验内容:

顺序表置空

#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));

}

五.程序运行结果

求表长

按序号取元素

按值查找

判表满

顺序表插入

删除元素

四、实验总结

本次实验主要考查的的是顺序表的应用及编写,而其他的很多功能都是原来练习过的,相对来说比较容易。

但是完成本次实验收获还是很多的,不仅仅实在新知识上的加深,进一步了解顺序表;同时也巩固了原来c程序中很多基本语法。

 

由于本次实验的类型与原来的课程设计很像,所以我在本次试验中加入了一些新的实现方式,还有就是尽量多的覆盖原来学到的知识点,并将其应用到本次实验中。

但是本次程序由于时间关系,只简单实现了相关的功能,在程序很多的细节方面并没有得到完善,最重要的就是用户在输入过程中,要是没有按照规则输入产生的错误处理,以及更好的循环操作等等,都需要进一步的完善。

但话说回来,这些都只是原来做过的工作,目的只在于完善一个程序,而对本次试验需要练习的内容没有太大冲突,所以在本次程序中,只有很少的报错和循环功能,望理解。

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

当前位置:首页 > 高等教育 > 理学

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

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