实验报告.docx

上传人:b****6 文档编号:4690314 上传时间:2022-12-07 格式:DOCX 页数:9 大小:17.59KB
下载 相关 举报
实验报告.docx_第1页
第1页 / 共9页
实验报告.docx_第2页
第2页 / 共9页
实验报告.docx_第3页
第3页 / 共9页
实验报告.docx_第4页
第4页 / 共9页
实验报告.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

实验报告.docx

《实验报告.docx》由会员分享,可在线阅读,更多相关《实验报告.docx(9页珍藏版)》请在冰豆网上搜索。

实验报告.docx

实验报告

佛山科学技术学院

实验报告

实验名称线性表操作

实验项目对元素类型为整型的顺序储存的线性表进行一些操作

专业班级08教育技术学姓名姚钦明学号2008914235

指导教师容汝佳成绩日期2009-9-10

一、实验目的

1.会定义线性表的顺序存储类型。

2.熟悉C++程序的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用。

3.熟悉对线性表的一些基本操作和具体的函数定义。

4.熟悉C++操作环境的使用以及多文件程序的输入、编辑调试和运行的全过程。

二、实验内容

1.对元素类型为整型的顺序储存的线性表进行一些操作。

三、实验步骤

1.需求分析

  本演示程序用VC++编写。

主要步骤如下:

  

①输入的形式和输入值的范围:

插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置在所有输入中,元素的值都是整数。

  ②输出的形式:

在所有三种操作中都显示操作是否正确以及操作后单链表的内容。

其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。

  ③程序所能达到的功能:

完成单链表的生成(通过插入操作)、插入、删除、排序操作。

④测试数据:

   A.插入操作中依次输入13579,生成一个单链表

   B.再输入24插入单链表。

C.对这些数进行排序。

   D.删除头尾两个数。

1和9

E.输入要删除的一个数。

如2,这生成的新链表为3457

2.概要设计

本实验由三部分组成头文件linearlist1.h、实现文件linearlist1.cpp、以及主文件listmain1.cpp。

主要程序如下

typedefintElemType;

structLinearList

{

ElemType*list;//存现线表元素

intsize;

intMaxSize;

};

voidInitList(LinearList&L,intms);

voidClearList(LinearList&L);

intListSize(LinearList&L);

boolListEmpty(LinearList&L);

boolListFull(LinearList&L);

voidTraverList(LinearList&L);

boolFindList(LinearList&L,ElemType&item);

boolInsertList(LinearList&L,constElemType&item,intmark);

boolDeleteList(LinearList&L,ElemType&item,intmark);

voidOrderOutputList(LinearList&L,intmark);

//实现头文件linearlist1.cpp

#include

#include

#include"linearlist1.h"

voidInitList(LinearList&L,intms)

{

L.list=newElemType[ms];

if(!

L.list==NULL)

{

cerr<<"Memoryallocationfailure!

"<

exit

(1);

}

L.size=0;

L.MaxSize=ms;

}

voidClearList(LinearList&L)

{

L.size=0;

}

intListSize(LinearList&L)

{

returnL.size;

}

boolListEmpty(LinearList&L)

{

returnL.size==0;

}

boolListFull(LinearList&L)

{

returnL.size==L.MaxSize;

}

voidTraverList(LinearList&L)

{

for(inti=0;i

cout<

}

boolFindList(LinearList&L,ElemType&item)

{

for(inti=0;i

if(L.list[i]==item)

{

item=L.list[i];

returntrue;

}

returnfalse;

}

boolUpdateList(LinearList&L,constElemType&item)

{

for(inti=0;i

if(L.list[i]==item)

{

L.list[i]=item;

returntrue;

}

returnfalse;

}

boolInsertList(LinearList&L,constElemType&item,intmark)

{

if(ListFull(L))returnfalse;

if(mark>0)//向表头插入元素

{

for(inti=L.size-1;i>=0;i--)

L.list[i+1]=L.list[i];

L.list[0]=item;

}

else//向表尾插入元素

if(mark<0)L.list[L.size]=item;

else

{//有序插入元素

for(inti=0;i

if(item

for(intj=L.size-1;j>=i;j--)

L.list[j+1]=L.list[j];

L.list[i]=item;

}

L.size++;

returntrue;

}

boolDeleteList(LinearList&L,ElemType&item,intmark)

{

if(ListEmpty(L))returnfalse;

if(mark>0)

{

//删除表头元素

item=L.list[0];

for(inti=1;i

L.list[i-1]=L.list[i];

}

else//删除表尾元素

if(mark<0)item=L.list[L.size-1];

else

{

//删除值为item的元素

for(inti=0;i

if(L.list[i]==item)break;

if(i>=L.size)

returnfalse;

elseitem=L.list[i];

for(intj=i+1;j

L.list[j-1]=L.list[j];

}

L.size--;

returntrue;

}

voidOrderOutputList(LinearList&L,intmark)//对线性表按升序或者降序输出

{

int*b=newint[L.size];

inti,k,x;

for(i=0;i

for(i=0;i

{

k=i-1;

for(intj=i;j

{

if(mark==1&&L.list[b[j]]

if(mark!

=1&&L.list[b[k]]

}

if(k!

=i-1)

{

intx=b[i-1];

b[i-1]=b[k];

b[k]=x;

}

for(i=0;i

cout<

cout<

}

}

//主文件listmain1.cpp

#include

constintML=10;

#include"linearlist1.h"

#include"linearlist1.cpp"

voidmain()

{

LinearLista;

InitList(a,ML);

inti;

ElemTypex;

//

cout<<"从键盘输入5个整数:

";

for(i=0;i<5;i++)

{

cin>>x;

InsertList(a,x,-1);

}

//

cout<<"从键盘输入2个整数:

";

cin>>x;

InsertList(a,x,1);

cin>>x;

InsertList(a,x,1);

//

TraverList(a);

OrderOutputList(a,1);

OrderOutputList(a,0);

//

LinearListb;

InitList(b,ML);

for(i=0;i

InsertList(b,a.list[i],0);

//

TraverList(b);

//

if(DeleteList(a,x,1))

cout<<"Deletesuccess!

"<

elsecout<<"Deletefail!

"<

if(DeleteList(a,x,-1))

cout<<"Deletesuccess!

"<

elsecout<<"Deletefail!

"<

cout<<"从键盘上输入一个待删除的整数:

";

cin>>x;

if(DeleteList(a,x,0))

cout<<"Deletesuccess!

"<

elsecout<<"Deletefail!

"<

//

TraverList(a);

}

4.调试分析

这次试验是我这个学期以来的第一次试验,所以调试起来非常麻烦,经过自己不断地努力还是没能调试出来,因为自己的基础太差了,还有过了一个学期,自己C语言的知识都忘光了,所以没能调试成功……

5.使用说明

  程序名为LinearList.exe,程序执行后显示

从键盘上输入5个整数:

 然后任意输入5个整数

A.插入操作中依次输入13579,生成一个单链表

   B.再输入24插入单链表。

C.对这些数进行排序。

   D.删除头尾两个数。

1和9

E.输入要删除的一个数。

如2,这生成的新链表为3457

6.测试结果:

(没有调试成功)

  

四、实验总结(结果分析和体会)

这是我这个学期的第一次试验,完成这次作业感觉上存在着非常多的问题,因为上个学期C语言的基础就不是很好,加上过了一个漫长的暑假,那些知识多忘记的七七八八了,加上课本的知识太深奥了,在短时间内又很难消化,所以说这次试验对我来说是一次极大的挑战。

这次试验中#include、#include这些头文件在以前都很少接触过,对于它的使用,我感到无从下手,还有对于线性结构类型这类函数以及它的调用在上个学期只是粗略学习过,并没有学的很深,所以对它的运用我感到无能为力。

还有上个学期我们函数的调用这一方面我们只是讲了一点点,这一方面的知识很匮乏,我想老师能不能找个时间帮我们补习一下……

完成这次试验,虽然困难重重,但我相信只要我愿意努力,我就会成功,我会不断努力的。

在今后的学习里,课堂上我会认真听讲,不懂的就要及时请教老师。

希望经过我的努力,还有老师的帮助,我的成绩能够有所提高……

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

当前位置:首页 > 初中教育 > 科学

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

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