欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构-线性表的顺序存储结构

程序员文章站 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];
    }
}