[log]线性表基本操作

什么是链表

  • 相邻元素通过指针连接
  • 最后一个元素的后继指针值为null
  • 执行过程中,长度可以增加或缩小
  • 空间能够按需分配
  • 没有内存空间的浪费

整个数组所有的元素都存储在操作系统分配的一个内存中

使用索引作为数组的下标

访问数组元素=基地址+偏移量*距离

 

 

线性表的存储结构分为:顺序存储和非顺序存储(链表)

顺序存储:用一组连续的存储空间依次存储线性表的元素。

特点:逻辑顺序与物理顺序相同

顺序表是顺序存储,随机存取。

实现顺序存储的最有效方法是使用一维数组。

 

 线性表上的基本操作

查找操作:

//返回元素x在数组中的位置

while (i <= last && data[i]!=x   )

i++;

if(i>last) returen - 1; //查找失败

else return i;//查找成功

基本思想:先判断查找的元素x是否在指定查找的数组中,与数组中的每一个元素进行比较。

 

插入操作:需要把插入位置之后的元素依次往后移动,从最后一个开始。

//在k处插入元素x

if((k<0||k>last+1)||last==MaxSize-1)

return 0;

else{

last ++;

for (int j = last;j>k;j--)

data[j]=data[j-1];

data[k]=x;

return 1;

}

基本思想:判断插入的位置是否越界,修改数组长度,移动数组元素。

 

删除操作:把需要删除的元素后面的元素依次往前移动,从删除元素的后一个位置开始。

//删除k处的元素x

 

if (k<0||k>last)return0;

last--;

for(int j = k ; j<=last; j++)

data[j] = data [j+1];

return 1;

基本思想:先找到要删除k处的元素x,然后k+1的元素迁移进行覆盖,也就是删除k处的元素,后面的元素依次前移。

 

线性表的顺序存储结构简单,易于实现,可以随机访问表中任一元素,存储密度高。

插入删除麻烦,需要移动大约一半的元素。

插入一个元素平均移动n/2的元素。

删除一个元素平均移动(n-1)/2的元素。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值