python线性表顺序存储实现_数据结构(三)——基于顺序存储结构的线性表

本文介绍了Python中基于顺序存储结构的线性表实现,包括顺序存储的定义、操作如元素获取、插入、删除、修改等,并探讨了静态和动态线性表,以及线性表的时间复杂度和潜在效率问题。
摘要由CSDN通过智能技术生成

数据结构(三)——基于顺序存储结构的线性表

一、基于顺序存储结构的线性表实现

1、顺序存储的定义

线性表的顺序存储结构是用一段地址连续的存储单元依次存储线性表中的数据元素。

2、顺序存储结构的操作

使用一维数组实现顺序存储结构。

template

class SeqList:public List

{

protected:

T* m_array;//顺序存储空间

int m_length;//当前线性表的长度

};

一维顺序存储结构可以是原生数组或是动态分配的空间。因此,根据空间分配的不同,分为静态线性表和动态线性表。

(1)元素的获取

顺序存储结构的元素获取操作:

A、判断目标位置是否合法

B、将目标位置作为数组下标获取元素

bool get(int index, T& value)

{

//判断目标位置是否合法

bool ret = (0 <= index) && (index < m_length);

if(ret)

{

//将目标位置作为下标获取元素

value = m_array[index];

}

return ret;

}

(2)元素的插入操作

顺序存储结构的元素插入操作:

A、判断目标位置是否合法

B、将目标位置后的所有元素向后移一位

C、将新元素插入目标位置

D、线性表长度增加1

bool insert(int index, const T& value)

{

//判断目标位置是否合法

bool ret = (0 <= index) && (index <= m_length);

ret = ret && ((m_length + 1) <= capacity());

if(ret)

{

//将目标位置后的所有元素后移一个位置

for(int i = m_length -1; index <= i; i--)

{

m_array[i+1] = m_array[i];

}

//将新元素插入到目标位置

m_array[index] = value;

//线性表长度加1

m_length++;

}

return ret;

}

(3)元素的删除操作

顺序存储结构的元素删除操作:

A、判断目标位置是否合法

B、将目标位置后的所有元素前移一个位置

C、线性表长度减1

bool remove(int index)

{

//判断目标位置是否合法

bool ret = (0 <= index) && (index < m_length);

if(ret)

{

//将目标位置后的所有元素前移一位

for(int i = index; i < m_length-1; i++)

{

m_array[i] = m_array[i+1];

}

//将线性表长度减1

m_length--;

}

return ret;

}

(4)元素值的修改

顺序存储结构中元素值的修改:

A、判断目标位置是否合法

B、修改目标位置元素的值

bool set(int index, const T& value)

{

//判断目标位置是否合法

bool ret = (0 <= index) && (index < m_length);

if(ret)

{

//修改目标位置元素的值

m_array[index] = value;

}

return ret;

}

(5)线性表长度的获取

顺序存储结构线性表的长度获取

int length()const

{

//线性表长度

return m_length;

}

(6)线性表的清空

void clear()

{

//清空线性表

m_length = 0;

}

(7)[]操作符重载

//[]操作符重载

T& operator[](int index)

{

//判断目标位置是否合法

if((0 <= index) && (index < m_length))

{

//返回下标相应的元素

return m_array[index];

}

else

{

THROW_EXCEPTION(IndexOutOfBoudsException, 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值