数据结构-线性表的顺序存储结构
程序员文章站
2022-06-01 20:23:57
...
#include<iostream>
using namespace std;
//线性表大小
const int maxSize=100;
//定义模板类
template<class DataType>
class MyList
{
public:
//无参构造函数 建立一个空顺序表
MyList()
{
length=0;
}
//含参构造函数
MyList(DataType a[],int n);
//析构函数
~MyList() {};
//求线性表的长度
int Length()
{
return length;
}
DataType Get(int i);
int Locate(DataType x);
void Insert(int i,DataType x);
DataType Delete(int i);
void PrintList();
private:
DataType data[maxSize];
int length;
};
template<class DataType>
MyList<DataType>::MyList(DataType a[],int n)
{
if(n>maxSize)
throw "参数非法";
for(int i=0; i<n; i++)
{
data[i]=a[i];
}
length=n;
}
template<class DataType>
DataType MyList<DataType>::Get(int i)
{
if(i<1 && i>length)
throw "位置非法";
else
return data[i-1];
}
template<class DataType>
int MyList<DataType>::Locate(DataType x)
{
for(int i=0; i<length; i++)
{
if(data[i]==x)
return i+1;
}
return 0;
}
template<class DataType>
void MyList<DataType>::Insert(int i,DataType x)
{
if(length>=maxSize)
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 DataType>
DataType MyList<DataType>::Delete(int i)
{
if(length==0)
throw "下溢";
if(i<1 || i>length)
throw "位置";
DataType x = data[i-1];
for(int j=i; i<length; j++)
{
data[j-1]=data[j];
}
length--;
return x;
}
template<class DataType>
void MyList<DataType>::PrintList(){
for(int i=0;i<length;i++){
cout<<data[i];
}
}
上一篇: java —— 神奇的幻方
下一篇: 数据结构中的线性表及其结构