C++数据结构之线性表

InitList( ):初始化顺序表

Insert(int L,int Elem):在L位置插入值Elem
1.检查内存空间是否够,如果实际长度大于或等于最大容量,则要用realloc扩展内存空间
2.判断插入的位置L是否合法
3.如果插入到表头或表中,则要把元素往后挪。如果插入到表尾,直接赋值。长度加一

Delete(int L):删除L位置上的元素
1.检查线性表是否为空
2.判断位置是否合法
3.取出L位置的值,作为返回值
4.把后边的元素往前移,长度减一

Locate(int Elem):返回Elem的位置

GetElem(int L):返回L位置上的值

ListLength( ):返回线性表的长度

ListEmpty( ):返回布尔值,线性表空返回真,不空返回假
 
  
class SqList{
private:
    int *Head;//顺序表的首地址
    int length;//实际长度,从1开始
    int MaxSize;//最大长度,超过这个数就要扩展申请的内存空间
public:
    SqList(int N);
    ~SqList();
    void InitList();//初始化线性表
    bool ListEmpty();//是否为空
    int ListLength();//线性表的长度
    int GetElem(int L);//获取某个位置的值
    int Locate(int Elem);//某个值的位置
    int Insert(int L,int Elem);//插入
    int Delete(int L);//删除
    };
SqList::SqList(int N)
{
    MaxSize=N;
    length=0;
    Head=(int*)malloc(N*sizeof(int));//申请一块内存
}
SqList::~SqList()
{
    free(Head);
    MaxSize=0;
    length=0;
}
void SqList::InitList()
{
    cout<<"请输入所有的数值:"<>*(Head+i);
        length++;
    }
}
bool SqList::ListEmpty()
{
    if(!length)//length==0时返回真
        return true;
    else
        return false;
}
int SqList::ListLength()
{
    return length;
}
int SqList::GetElem(int L)
{
    if (L<1||L>length)
    {
        cout<<"位置不合法"<length)
    {
        cout<<"位置不合法"<=MaxSize)//如果空间不够,就要扩大申请的内存
    {
        Head=(int*)realloc(Head,MaxSize*2*sizeof(int));
        MaxSize+=MaxSize;
    }
    if (L<1||L>length+1)
    {
        cout<<"位置错误,无法插入"<=L-1;j--)
        {
            *(Head+j+1)=*(Head+j);//等于前一个的值
        }
    *(Head+L-1)=e;
    length++;
    return 0;
}



你可能感兴趣的:(C++数据结构之线性表)