顺序表原理

顺序表是简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以 快速定位第几个元素中间不允许有空值,插入、删除时需要移动大量元素

顺序表的三个要素:

 用 elems 记录存储位置的基地址(数组的名字就是数组的起始地址)

 分配一段连续的存储空间 size

 用 length 记录实际的元素个数,即顺序表的长度

顺序表的定义

struct SqList{
int*elems;//存放对象的指针
int length;//当前储存的数据数量
int size;//一共可以存储的数据个数
}

 顺序表的初始化

bool InitList(SqList&L)
{
L.elems=new int[Max];//开辟一个大小为max的空间
if(!L.elems)//如果指向空间的指针为空,就返回假
    return false;
L.size=Max;//将顺序表的总大小初始化为max
L.length=0;//将顺序表的当前元素存储元素初始化为0
return true;
}

顺序表的插入(按照顺序插入)

bool insertList(SqList&L,int e)
{
if(L.length>=L.size)//如果当前存储数已经等于最大存存储数表示已经存满了,返回flase
    return flase;
L.elems[L.length++]=e;//直接将要存放的值放入当前的下标中,并将下标加一
return true;
}

顺序表位置插入

bool insertList(SqList&L,int e,int dex)
{
if(L.length>=L.size)//如果当前存储数已经等于最大存存储数表示已经存满了,返回flase
    return flase;
for(int i=L.length;i>=dex;i--)//将要插入的当前位置的索引向后移动
    L.elems[i]=L.elems[i-1];
L.elems[dex-1]=e;//将数据插入指定的索引位置
L.length++;//更新顺序表中存储的数据元素个数
return true; 
}

顺序表删除元素

bool DeleteList(SqList&L)
{
if(L.length>0)
{
    L.length--;
    return true
}
else
    return flase;
}

 顺序表删除指定元素

bool DeleteList(SqList&L,int dex)
{
if(L.length<0||L.length<dex)//判断传入的索引的合法性,和顺序表是否为空
    return flase;
for(int i=dex;i<L.length;i++)//将数据从索引开始一次向前移动
    L.elems[i-1]=L,elems[i]
L.length--;//更新当前顺序表中的元素个数。
return true;
}

 顺序表的销毁

void CloceList(SqList&L)
{
if(L.elems)//判断指针是否为空,如果不为空这删除New空间
    delete[]L.elsems;
L.size=L.length=0;//将顺序表中的总元素个数和当前元素个数置零
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值