[YM]模板-顺序表

概念:

顺序表是一种线性表,作为线性表的一种,它是用一段物理地址连续的存储单元依次存储数据元素的线性结构

模板:

using T=int;
typedef struct Node{
    T *data;
    int last;
    int MaxSize;
}*LinearList;
//1 初始化顺序表
int InitList(LinearList &L,int Size){
    L=new Node();
    L->data=new T[Size];
    if(L->data){
        L->last=-1;
        L->MaxSize=Size;
        return 1;
    }
    return 0;
}
//2 获取顺序表的长度
int GetLen(LinearList &L){
    return L->last+1;
}
//3 根据下标获取元素
T GetById(LinearList &L,int Id){
    if(Id<1||Id>L->last+1){
        cout<<"位置不正确\n";
        return 0;
    }
    return L->data[Id-1];
}
//4 根据值查询下标
int GetByVal(LinearList &L,T x){
    for(int i=0;i<=L->last;i++)
        if(L->data[i]==x)return i+1;
    return -1;
}
//5 插入元素
int InsertList(LinearList &L,int Id,T x){
    if(Id<1||Id>L->last+2){
        cout<<"插入位置不正确\n";
        return 0;
    }
    if(L->MaxSize==L->last+1){
        cout<<"顺序表已满\n";
        return 0;
    }
    for(int i=L->last;i>=Id-1;i--)L->data[i+1]=L->data[i];
    L->data[Id-1]=x;
    L->last++;
    return 1;
}
//6 删除元素
int DeleteList(LinearList &L,int Id){
    if(Id<1||Id>L->last+1){
        cout<<"删除位置不正确\n";
        return 0;
    }
    for(int i=Id-1;i<=L->last;i++)L->data[i]=L->data[i+1];
    L->last--;
    return 1;
}
//7 遍历顺序表
void show(LinearList &L){
    for(int i=0;i<=L->last;i++)
        cout<<L->data[i]<<" \n"[i==L->last];
}
void solve(){
    LinearList L;    
    InitList(L,10);
    for(int i=1;i<=5;i++)InsertList(L,i,i);
    show(L);
    cout<<GetById(L,2)<<'\n';
    cout<<GetByVal(L,3)<<"\n";
    DeleteList(L,3);
    show(L);
}

简单实现增删改查 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值