线性表描述(顺序表)及相关操作

最近在复习数据结构的时候,重新学习了线性表中的顺序表(数组)。作为练手,把它的一些基本操作实现了,以后可能用得到,现记录如下。

//顺序表描述
#define Maxsize 50
typedef struct
{
    int data[Maxsize];  //直接分配
    int length;     //当前的长度
}Sqlist;

typedef struct
{
    int *data;      //动态分配
    int maxsize;
    int length;
}Seqlist;
//在L的第pos个位置(pos1开始)插入e
bool ListInsert(Sqlist &L,int pos,int e)
{
    if(pos>L.length+1 || pos<1 )
        return false;
    if(L.length >= Maxsize)
        return false;

    for(int i = L.length;i>=pos;--i)
    {
        L.data[i] = L.data[i-1];
    }
    L.data[pos-1] = e;
    ++L.length;

    return true;
}

//删除L中第pos的位置,并返回删除的值
bool ListDelete(Sqlist &L,int pos,int &e)
{
    if(pos>L.length || pos<1)
        return false;

    e = L.data[pos-1] ;     //e为返回的删除元素的值
    for(int i = pos;i<L.length;++i)
    {

        L.data[i-1] = L.data[i];    //元素前移
    }

    --L.length;     //元素数量减1

    return true;

}

//查找L中第一个为e的位置,如果不存在则返回-1
int LocateElem(Sqlist L,int e)
{
    for(int i = 0;i<L.length;++i)
    {
        if(L.data[i] == e)
            return i+1;     //返回元素下标加1,即第i+1个位置
    }

    return -1;
}

//打印输出
void PrintList(Sqlist L)
{
    for(int i = 0;i<L.length;++i)
    {
        if(0 == i)
            cout<<L.data[i];
        else
            cout<<" "<<L.data[i];
    }
    cout<<endl;
}

//初始化表
void InitList(Sqlist &L)
{
    L.length = 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值