顺序表验证实验作业精选版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一顺序表操作验证
一、设计与编码
#include
using namespace std;
const int MaxSize=100;
template
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
{int i;
if (n>MaxSize) throw "参数非法";
for (i=0; i data[i]=a[i]; length=n;} //在线性表中第i个位置插入值为x的元素 template void SqList {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 {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 {int i; for (i=0; i if (data[i]==x) return i+1; //下标为i的元素等于x,返回其序号i+1 return 0; //退出循环,说明查找失败 } //遍历线性表,按序号依次输出各元素 template void SqList {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; SqList 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;} }