实验1:线性表的顺序存储

  • 格式:doc
  • 大小:50.00 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验1:顺序表基本操作

一、实验目的

1.学会定义线性表的顺序存储类型,实现C++程序的基本结构,对线性表的一些基本操作和具体的函数定义。

2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。

3.掌握对多函数程序的输入、编辑、调试和运行过程。

二、实验要求

1.预习C++语言中结构体的定义与基本操作方法。

2.对顺序表的每个基本操作用单独的函数实现。

3.编写完整程序完成下面的实验内容并上机运行。

4.整理并上交实验报告。

三、实验内容:

★1.编写程序实现顺序表的下列基本操作:

(1)初始化顺序表La。

(2)将La置为空表。

(3)销毁La。

(4)在La中插入一个新的元素。

(5)删除La中的某一元素。

(6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。(7)遍历顺序表La.

(8)打印输出La中的元素值。

主函数见课本P61,各函数具体定义参考P53-60.

源程序:

//以为例a[12]={3,6,9,12,15,18,21,24,27,30,33,36}为例

#include

#include

typedef int ElemType;

struct List {

ElemType *list;

int size;

int MaxSize;

};

void InitList(List &L) //初始化顺序表La

{

L.MaxSize=10;

L.list=new ElemType[L.MaxSize];

if(L.list==NULL){

cout<<"动态可分配的存储空间用完,退出运行!"<

exit(1);

}

L.size=0; //将La置为空表

}

void ClearList(List &L) //销毁La

{

if(L.list!=NULL){

delete []L.list;

L.list=NULL;

}

L.MaxSize=0;

L.size=0;

}

int LenthList(List &L)

{

return L.size;

}

bool EmptyList(List &L)

{

return L.size==0;

}

ElemType GetList(List &L,int pos)

{

if(pos<1 || pos>L.size)

{

cerr<<"pos is out range!"<

exit(1);

}

return L.list[pos-1];

}

void TraverseList(List &L) //遍历顺序表la

{

for(int i=0; i

cout<

cout<

}

//在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。

bool FindList(List &L,ElemType& item)

{

for(int i=0;i

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

item=L.list[i];

return true;

}

return false;

}

bool UpdateList(List &L, const ElemType& item)

{

for(int i=0; i

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

L.list[i]=item;

return true;

}

return false;

}

bool InsertList(List &L,ElemType item,int pos)

//在La中插入一个新的元素

{

if(pos<-1 || pos>L.size+1){

cout<<"pos值无效!"<

}

int i;

if(pos==0) {

for(i=0; i

if(item

pos=i+1;

}

else if(pos==-1) pos=L.size+1;

if(L.size==L.MaxSize){

int k=sizeof(ElemType);

L.list=(ElemType*)realloc(L.list,2*L.MaxSize*k);

if(L.list==NULL){

cout<<".......!"<

exit(1);

}

L.MaxSize=2*L.MaxSize;

}

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

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

L.list[pos-1]=item;

L.size++;

return true;

}

bool DeleteList(List &L, ElemType& item, int pos)

//删除La中的某一元素

{