#include <iostream>
using namespace std;
template <class T>
class seqlist{
public:
seqlist();//构造
seqlist(T a[],int n);//构造
~seqlist()//析构
{
}
int Length();//表长
T get(int i); //查找第i个元素
int locate(T x); //查找x,返回位置
void insert1(int i,T x); //插入
T delete1(int i);
int empty();//判断表是否为空
void printlist();//遍历
private:
T data[100];
int length;
};
template <class T>
seqlist<T> ::seqlist() //构建
{
length=0;
}
template <class T>
seqlist<T> ::seqlist(T a[],int n) //构建
{
if(n>100) throw "参数错误";
for(int i=0;i<n;i++)
data[i]=a[i];
length=n;
}
template <class T>
int seqlist<T> ::Length() //长度
{
return length;
}
template <class T>
int seqlist<T> ::locate(T x) //按值查找
{
if(length==0) throw "表空";
for(int i=0;i<length;i++)
if(data[i]==x)
return i+1;
return 0;
}
//插入
template <class T>
void seqlist<T> ::insert1(int i,T x)
{
if(length>=100) throw "参属非法";
if(i<1||i>length+1) throw "位置错误";
for(int j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}
//删除
template <class T>
T seqlist<T> ::delete1(int i)
{
if(i<1||i>length) throw "位置错误";
T b=data[i-1];
for(int j=i;j<length;j++)
data[j-1]=data[j];
length--;
return b;
}
//遍历
template <class T>
void seqlist<T> ::printlist()
{
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
seqlist<int> b(a,n);
b.printlist();
b.delete1(1);
b.printlist();
cout<<b.Length()<<endl;
b.insert1(2,100);
b.printlist();
cout<<b.locate(100)<<endl;
return 0;
}
顺序表
最新推荐文章于 2024-10-10 17:29:55 发布