头文件:
#ifndef seqlist_H
#define seqlist_H
const int maxsize=100;
class seqlist
{
int data[maxsize]; //存放数据元素的数组
int length; //线性表的长度
public:
seqlist(){length=0;} //无参构造函数,建立一个空的顺序表
seqlist(int a[],int n); //有参构造函数,建立一个长度为n的顺序表
~seqlist(){} //析构函数
int get(int i); //按位查找,在线性表中查找第i个元素
int locate(int x); //按值查找,在线性表中查找值为x的元素序号
void insert(int i,int x); //插入操作,在线性表中第i个位置插入值为x的元素
int dele(int i); //删除操作,删除线性表的第i个元素
void printlist(); //遍历操作,按序号依次输出个元素
};
#endif
子函数:
#include<iostream>
using namespace std;
#include"seqlist.h"
seqlist::seqlist(int a[],int n) //线性表的初始化
{
if(n>maxsize) throw"参数非法";
int i;
cout<<"请输入线性表的数据:"<<endl;
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
data[i]=a[i];
length=n;
}
int seqlist::get(int i) //按位查找
{
if(i<1&&i>length) throw"查找位置非法";
else return data[i-1];
}
int seqlist::locate(int x)//按值查找
{
int i;
for(i=0;i<length;i++)
if(data[i]==x)
return i+1;
return 0;
}
void seqlist::insert(int i,int 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];
data[i-1]=x;
length++;
}
int seqlist::dele(int i)//按位删除一个数据元素
{
int x;
if(length==0) throw"下溢";
if(i>maxsize||i<1) throw"位置错误";
x=data[i-1];
for(;i<length;i++)
data[i-1]=data[i];
length--;
return x;
}
void seqlist::printlist() //遍历操作
{
int i;
for(i=0;i<length;i++)
cout<<data[i]<<"\t";
cout<<endl;
}
主函数:
#include<iostream>
using namespace std;
#include"seqlist.h"
void main()
{
int i;
int *s;
s=new int[maxsize];
cout<<"请输入线性表的长度:"<<endl;
cin>>i;
seqlist l(s,i);
cout<<"原数据为:"<<endl;
l.printlist();
l.get(3);
cout<<"第三位的值为:"<<l.get(3)<<endl;
l.locate(5);
if(l.locate(5)==0) cout<<"表内无该值"<<endl;
else cout<<l.locate(5)<<"该值为线性表中第"<<l.locate(5)<<"位"<<endl;
try
{
l.insert(4,25);
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"执行插入操作后数据为:"<<endl;
l.printlist();
try
{l.dele(2);}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"执行删除操作后数据为:"<<endl;
l.printlist();
delete []s;
}