数据结构::顺序表的基本操作

数据结构::顺序表的基本操作

#pragma GCC positionimize(3,"Otrst","inline")
//#include "emplace.hpp"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
const int INF=0x3f3f3f;
const double pi = 3.141592653;
const double E = 2.71828182846;
const ll mod=1e9+7;
const int M=1e3+5;
const double eps=1e-8;
#define ci(x) scanf("%d",&x)
#define co(x) printf("%d\n",x)
#define InitSize 10
class Seqlist{
private:
    int *data;
    int Maxsize;
    int lengh;
public:
    void InitList();
    void IncreaseSize(int num);
    bool ListInsert(int i,int n);
    bool ListDelet(int i,int &n);
    int GetElem(int i);
    int LocatElem(int e);
};
void Seqlist::InitList() ///初始化顺序表
{
    data = (int *)malloc(InitSize*sizeof(int));
    Maxsize = InitSize;
    lengh = 0;
}
/// 动态数组
void Seqlist::IncreaseSize(int num) ///增加顺序表长度
{
    int *p = data;
    data = (int *)malloc((Maxsize+num)*sizeof(int));
    for(int i=1;i<=lengh;i++)
    {
        data[i]=p[i];
    }
    Maxsize=Maxsize+num;
    free(p);
}
bool Seqlist::ListInsert(int i,int n) ///数据的插入
{
    if(i<1||i>=lengh+1)
        return false;
    if(lengh>=Maxsize)
        return false;
    for(int j=lengh;j>=i;j--)
        data[j]=data[j-1];
    data[i-1]=n;
    lengh++;
    return true;
}
bool Seqlist::ListDelet(int i,int &n) ///删除第i个元素
{
    if(i<1||i>=lengh)
        return false;
    n=data[i-1];
    for(int j=i;j<lengh;j++)
    {
        data[j-1]=data[j];
    }
    lengh--;
    return false;
}
int Seqlist::GetElem(int i) ///获取第i个元素
{
    return data[i-1];
}
int Seqlist::LocatElem(int e)///查找元素
{
    for(int i=0;i<lengh;i++)
    {
        if(data[i]==e)
            return i+1;
    }
    return 0;
}
int main()
{
    Seqlist L;
    L.InitList();
    //IncreaseSize(L,20);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/a-hua/p/12960393.html