顺序表(详细代码)

概念

顺序表是将表中的数据依次存放在计算机内存中一组地址连续的存储单元中的一种数据结构,可以将顺序表看成一个可以动态改变大小的数组
数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系

是线性表的一种,采用顺序存储结构的线性表简称为"顺序表”,也就是在内存中连续存储


存储特点:只要确定了起始位置,数据可以通过指定位置得到:首地址+(位置*偏移大小)
基本操作:增、删、改、查

代码实现

typedef int Type;
//顺序表数据结构
typedef struct
{
    Type *p;
    int len;
    int Maxsize;
}SqList;
//---创建空顺序表L---
bool InitList(SqList *L)
{
    L->p = (Type *)malloc(L->Maxsize * sizeof(Type));//为顺序表动态开辟内存
    if(!L->p)//未开辟成功
        return false;

    L->len = 0;
    return true;
}
//---在顺序表第n个位置之前插入m---
bool Insert(SqList *L,int n,Type m)
{
    if (L->len == L->Maxsize)//1.顺序表已满
        return false;
    if (n<1 || n>L->len+1)//2.插入位置不在范围内
        return false;

    if (n <= L->len)//3.插入位置不在表尾
    {
        for (int i = L->len-1; i >= n-1; i--)
        {
            L->p[i+1] = L->p[i];
        }
    }
    L->p[n-1] = m;
    L->len++;
    return true;
}
//---将顺序表第n个位置的数删除---
bool Delete(SqList *L,int n)
{
    if (L->len == 0)//1.顺序表为空
        return false;
    if (n<1 || n>L->len)//2.删除位置不在范围内
        return false;

    if (n < L->len)//3.删除位置不在表尾
    {
        for (int i = n-1; i <= L->len-2; i++)
        {
            L->p[i] = L->p[i+1];
        }
    }
    L->len--;
    return true;
}
//---将顺序表第n个位置的数改为m---
bool Change(SqList *L,int n,Type m)
{
    if (L->len == 0)//1.顺序表为空
        return false;
    if (n<1 || n>L->len)//2.修改位置不在范围内
        return false;

    L->p[n-1] = m;
    return true;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你怎么知道我头发乌黑浓密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值