#SeqList.h文件
#ifndef SeqList_H
#define SeqList_H
const int MaxSize=100;
template <typename DataType>
class SeqList
{
public:
SeqList(){Length =0;//无参赋值
}
SeqList(int L,DataType a[]);//有参赋值(index,a[])
~SeqList(){
}
void Inset(int i,DataType x);//增
DataType Delete(int i);//删
DataType Change(int i,DataType x);//改值
DataType Get(int i);//按位查询
int Locate(DataType x);//按值查询
void Print();//打印
private:
int Length;
DataType Data[MaxSize];
};
#endif
#SeqList.cpp文件
#include<iostream>
using namespace std;
#include"SeqList.h"
//赋值
template <typename DataType> SeqList<DataType>:: SeqList(int L,DataType a[]){
if(L>MaxSize)throw "上溢出";
if(L<0||L>MaxSize)throw "位置异常";
Length = L;
for(int i=0;i<Length;i++){
Data[i]=a[i];
}
}
//增
template <typename DataType> void SeqList<DataType>:: Inset(int i,DataType x){
if(i<1||i>Length)throw "位置异常";
for(int j=Length;j>i-1;j--){
Data[j]=Data[j-1];
}
Data[i-1]=x;
Length++;
}
//删
template <typename DataType> DataType SeqList<DataType>::Delete(int i){
if(i<1||i>Length)throw "位置异常";
int x;
x=Data[i-1];
for(int j=i-1;j<Length-1;j++){
Data[j]=Data[j+1];
}
Length--;
return x;
}
//按位查询
template <typename DataType> DataType SeqList<DataType>::Get(int i){
if(i<1||i>Length)throw "位置异常";
return Data[i-1];
}
//按值查询
template <typename DataType> int SeqList<DataType>::Locate(DataType x){
for(int i=0;i<Length;i++){
if(Data[i]==x)
return i+1;
}
return 0;
}
//打印
template <typename DataType> void SeqList<DataType>::Print(){
for(int i=0;i<Length;i++){
cout<<Data[i]<<" ";
}
cout<<endl;
}
//改值
template <typename DataType> DataType SeqList<DataType>::Change(int i,DataType x){
if(i<1||i>Length)throw "位置异常";
int s;
s=Data[i-1];
Data[i-1]=x;
return s;
}
#SeqList_Main.cpp文件
#include<iostream>
using namespace std;
#include"SeqList.cpp"
/*******SeqList(){Length =0;//无参赋值
** }
** SeqList(int L,DataType a[]);//有参赋值(index,a[])
** ~SeqList(){
** }
** void Inset(int i,DataType x);//增
** DataType Delete(int i);//删
** DataType Change(int i,DataType x);//改值
** DataType Get(int i);//按位查询
** int Locate(DataType x);//按值查询
** void Print();//打印
********/
int main(){
int r[5]={1,2,3,4,5};
try{
SeqList<int> L(5,r);
cout<<"打印"<<endl;
L.Print();
cout<<"插入第1个:6"<<endl;
L.Inset(1,6);
L.Print();
cout<<"删除第1个:6"<<endl;
int x=L.Delete(1);
L.Print();
cout<<"改第1个为10"<<endl;
int y=L.Change(1,10);
L.Print();
cout<<"按位查询第一个"<<endl;
cout<<L.Get(1)<<endl;
cout<<"按值查询10在第几个元素"<<endl;
cout<<L.Locate(10)<<endl;
}
catch(char *p){
cout<<p<<endl;
}
return 0;
}