顺序表验证实验作业精选版

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

实验一顺序表操作验证

一、设计与编码

#include

using namespace std;

const int MaxSize=100;

template //定义模板类 SqList

class SqList

{public:

SqList(){length=0;} //无参构造函数

SqList(T a[ ], int n); //有参构造函数

~ SqList(){}

void Insert(int i, T x);//在线性表中第i个位置插入值为x的元素 T Delete(int i); //删除线性表的第i个元素

int Locate(T x ); //按值查找,求线性表中值为x的元素序号 void PrintList( ); //遍历线性表,按序号依次输出各元素

private:

T data[MaxSize]; //存放数据元素的数组

int length; //线性表的长度

};

//有参构造函数

template

SqList:: SqList(T a[ ], int n)

{int i;

if (n>MaxSize) throw "参数非法";

for (i=0; i

data[i]=a[i];

length=n;}

//在线性表中第i个位置插入值为x的元素

template

void SqList::Insert(int i, T x)

{int j;

if (length>=MaxSize) throw "上溢";

if (i<1||i>length+1) throw "位置异常";

for (j=length; j>=i; j--)

data[j]=data[j-1]; //注意第j个元素存在数组下标为j-1处

data[i-1]=x;

length++;

}

//删除线性表的第i个元素

template

T SqList::Delete(int i)

{int x,j;

if (length==0) throw "下溢";

if (i<1||i>length) throw "位置异常";

x=data[i-1];

for (j=i; j

data[j-1]=data[j]; //注意此处j已经是元素所在的数组下标 length--;

return x;

}

//按值查找,求线性表中值为x的元素序号

template

int SqList::Locate(T x)

{int i;

for (i=0; i

if (data[i]==x) return i+1; //下标为i的元素等于x,返回其序号i+1

return 0; //退出循环,说明查找失败

}

//遍历线性表,按序号依次输出各元素

template

void SqList::PrintList()

{int i;

cout<<"------------------------------------";

cout<

cout<<":";

for(i=0;i

cout<<" "<

cout<

cout<<"-------------------------------------";

cout<

//菜单

void menu()

{

cout<<"顺序表的实现"<

cout<<"*********************"<

cout<<"1.插入:"<

cout<<"2.删除:"<

cout<<"3.查找:"<

cout<<"4.显示:"<

cout<<"5.退出:"<

cout<<"*********************"<

}

//主程序

int main()

{

int a[10]={33,34,45,67,87,65,21,23,56,64};

int i,j,x,loc;

SqLists1(a,10);

int flag=1;

menu();

while(flag)

{

cout<<"请输入你需要的选项:";

cin>>j;

switch(j)

{

case 1:

{

cout<<"显示要插入的位序及数值:"<

cin>>i>>x;

s1.Insert(i,x);

break;

}

case 2:

{cout<<"输入元素所在位置:";

cin>>i;

s1.Delete(i);

cout<<"删除数据后表变为:"<

s1.PrintList();

break;}

case 3:

{cout<<"请输入你要查找的值:";

cin>>x;

loc=s1.Locate(x);

cout<<"所查数据所在:"<

break;}

case 4:

{s1.PrintList();

break;}

case 5:

{flag=0;

break;}

default:

{cout<<"错误!!!"<

break;}

}

相关文档
最新文档