实验1:线性表的顺序存储
- 格式:doc
- 大小:50.00 KB
- 文档页数:5
实验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中的某一元素 {